From d15a15c80954f8acd59f1cc31d9fb8e5a6c1f6e0 Mon Sep 17 00:00:00 2001 From: Fabi <38692350+hifabienne@users.noreply.github.com> Date: Wed, 6 Jul 2022 11:29:59 +0200 Subject: [PATCH 01/17] docs: Eventstore architecture (#3904) * docs: add zitadel eventstore architecture * docs: add zitadel eventstore architecture * docs: add zitadel eventstore architecture * docs: add zitadel eventstore architecture * docs: add zitadel eventstore architecture * docs: fix broken link * Update docs/docs/concepts/eventstore/overview.md Co-authored-by: Elio Bischof * Update docs/docs/concepts/eventstore/overview.md Co-authored-by: Elio Bischof * Update docs/docs/concepts/eventstore/overview.md Co-authored-by: Elio Bischof * Update docs/docs/concepts/eventstore/zitadel.md Co-authored-by: Elio Bischof * Update docs/docs/concepts/eventstore/zitadel.md Co-authored-by: Elio Bischof Co-authored-by: Elio Bischof --- docs/docs/concepts/eventstore.md | 20 ----- docs/docs/concepts/eventstore/overview.md | 50 ++++++++++++ docs/docs/concepts/eventstore/zitadel.md | 97 +++++++++++++++++++++++ docs/sidebars.js | 10 ++- 4 files changed, 156 insertions(+), 21 deletions(-) delete mode 100644 docs/docs/concepts/eventstore.md create mode 100644 docs/docs/concepts/eventstore/overview.md create mode 100644 docs/docs/concepts/eventstore/zitadel.md diff --git a/docs/docs/concepts/eventstore.md b/docs/docs/concepts/eventstore.md deleted file mode 100644 index 00e94625652..00000000000 --- a/docs/docs/concepts/eventstore.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Eventstore ---- - -ZITADEL is built on the [event sourcing pattern](./architecture), where changes are stored as events in an eventstore. - -## What is an eventstore? - -Traditionally, data is stored in relations as a state - -- A request needs to know the relations to select valid data -- If a relation changes, the requests need to change as well -- That is valid for actual, as well as for historical data - -An Eventstore on the other hand stores events, meaning every change that happens to any piece of data relates to an event - -- Think of it as a ledger that gets new entries over time, accumulative -- To request data, all you have to do is to sum the events as the summary reflects the actual state -- To investigate past changes to your system, you just select the events from your time range of interest -- That makes audit/analytics very powerful, due to the historical data available to build queries diff --git a/docs/docs/concepts/eventstore/overview.md b/docs/docs/concepts/eventstore/overview.md new file mode 100644 index 00000000000..a11e288b062 --- /dev/null +++ b/docs/docs/concepts/eventstore/overview.md @@ -0,0 +1,50 @@ +--- +title: Overview +--- + +ZITADEL is built on the [event sourcing pattern](../architecture), where changes are stored as events in an eventstore. + +## What is an eventstore? + +Traditionally, data is stored in relations as a state + +- A request needs to know the relations to select valid data +- If a relation changes, the requests need to change as well +- That is valid for actual, as well as for historical data + +An Eventstore on the other hand stores events, meaning every change that happens to any piece of data relates to an event. +The data is stored as events in an append-only log. + +- Think of it as a ledger that gets new entries over time, accumulative +- To request data, all you have to do is to sum the events as the summary reflects the actual state +- To investigate past changes to your system, you just select the events from your time range of interest +- That makes audit/analytics very powerful, due to the historical data available to build queries + +## Benefits + +Audit: You have a built-in audit trail that tracks all changes over an unlimited period of time. +Travel back in time: With our way of storing data we can show you all of your resources at a given point in time. + +## Definitions + +Eventsourcing has some specific terms that are often used in our documentation. To understand how ZITADEL works it is important to understand this key definitions. + +### Events + +An event is something that happens in the system and gets written to the database. This is the single source of truth. +Events are immutable and the current state of your system is derived from the events. + +Possible Events: +- user.added +- user.changed +- product.added +- user.password.checked + +### Aggregate + +An aggregate consist of multiple events. All events together in will lead to the current state of the aggregate. +The aggregate can be compared with an object or a resources. + +### Projections + +Projections contain the computed objects, that will be used on the query side for all the requests. diff --git a/docs/docs/concepts/eventstore/zitadel.md b/docs/docs/concepts/eventstore/zitadel.md new file mode 100644 index 00000000000..c89e7a7e034 --- /dev/null +++ b/docs/docs/concepts/eventstore/zitadel.md @@ -0,0 +1,97 @@ +--- +title: Implementation in ZITADEL +--- + +This documentation gives you an insight into the structure of the ZITADEL database. +The goal is to give you a rough overview, so you know where which data is stored and which database schemas and tables are used. + +## Event + +The single source of truth of ZITADEL are the events that are stored in the eventstore. +From these events all different kind of resources e.g Users, Projects, Applications, etc. can be computed. + +An event has the following data: + +| Attribute | Description | Example | +| --- | --- | --- | +| id | unique identifier of the event, this is generated by the database | b6402a60-e4655-4cc0-904b-f5c6760c4406 | +| aggregate_type | the type of the aggregate, an aggregate can be compared to a resource or an object. One aggregate contains multiple event types | user | +| aggregate_id | The unique identifier of an aggregate, this is generated by ZITADEL and is a sonyflake id | 168096909691353697 | +| aggregate_version | The aggregate version shows in which version of the aggregate the event was created. This is needed to be able to compute correct objects | v1 | +| event_type | The type of the event | user.human.added | +| event_sequence | The event sequence is a sequence number that is incremented by one for each event on the instance. For technical reasons, a number can be omitted in some cases. This is needed so that the sequence of the events can be ensured. | 1234 | +| previous_aggregate_sequence| This number is the sequence of the event last created on this specific aggregate. E.g. Last user with specific aggregate_id | 1233| +| previous_aggregate_type_sequence | This number is the sequence of the event last created on this aggregate. E.g Last User | 1230 | +| creation_date| timestamp when the event was created | 2022-07-05 13:57:56.358774+00 | +| editor_user| The editor user contains mostly an unique identifier of a user. And tells who did the request that led to this event. Sometimes this can also be a name of a system within ZITADEL. | 165460784409638965, NOTIFICATION, LOGIN | +| editor_service | The service defines which API was called when the event got created. If the event was created from the system itself this is empty. | Admin-API | +| resource_owner | The resource owner defines to which organization/resource_owner the event belongs. This is an id generated by ZITADEL as sonyflake id | 168051083313153168 | +| instance_id | ZITADEL is capable of containing multiple ZITADEL instances withing the system. This id is the unique identifier of the Instance and is generated by ZITADEL as sonyflake id. | 165460784409737865 | + + +## Schemas + +| Schema | Description | Examples | +| --- | --- | --- | +| System | The system contains everything that is needed outside the ZITADEL instances. | assets, encryption_key | +| Eventstore | Eventstore is the base of ZITADEL and is the single source of truth. All the events stored in the eventstore can be used to generate different projections. | events, instance sequences, system wide unique constraints +| Projections| The projections contain all the computed objects which are used for reading requests. | users, projects, etc| +| Auth | This contains projections which are used for the auth api. All projections in this schema should be moved to Projections soon | users, auth_request, etc. | +| Adminapi | This contains projections which are used for the admin api. All projections in this schema should be moved to Projections soon | styling| +| Notification | This contains projections which are used for sending notification. All projections in this schema should be moved to Projections soon | styling| + +## Projections + +The projections in ZITADEL contain all the computed objects, that are used for the reading requests. +It is possible that the projections are slightly behind the actual event and not all objects are up-to-date. + +### Pub-Sub +To keep the projections as up-to-date as possible, an internal pub-sub system is used. +As soon as an event is written to the event store, it is sent to the projections that have subscribed to this aggregate. + +### Spooler +It is sometimes possible for technical reasons that not all events were sent to the projections. +For this reason, a spooler runs in parallel, which checks every n minutes whether there are new events that have not yet been processed. + +### Current Sequence + +To ensure that no events get missed when creating the Projections, ZITADEL stores the current sequence, that was processed. +You can find the current sequence in the following tables: +- projections.current_sequences +- notification.current_sequences +- auth.current_Sequences +- adminapi.current_sequences + +The current sequence is stored for each ZITADEL instance and table. + +| Attribute | Description | Examples | +| --- | --- | --- | +| projection_name | The name of the projection for which the sequence is valid. | projection.users | +| aggregate_type | The aggregate type where the sequence was from | user | +| current_sequence | The sequence that was last processed | 1234 | +| instance_id | The instance to which the event belongs | 165460784409737834 | +| timestamp | Timestamp when the table was updated | 2022-07-05 13:57:59.454798+00 | + +### Failed Events + +Sometimes an event cannot be processed correctly for some reason and an error occurs. +The event is then tried to be processed n times. +When a defined number of attempts have failed, the event is stored in the Failed Events Table and the next event is processed. +This must be done so that the projection is not blocked and no further events are processed. + +You can find the failed_events in the following tables: +- projections.failed_events +- notification.failed_events +- auth.failed_events +- adminapi.failed_events + +| Attribute | Description | Examples | +| --- | --- | --- | +| projection_name | The name of the projection for which the failed event should have been processed. | projection.users | +| failed_sequence | The sequence of the event that failed | 1234 | +| failure_count | The number of times the event was attempted to be processed. If the number is lower than the max. attempts the event could be processed, but not on the first attempt | 5 | +| error | The error message that occurred when the event could not be processed | User not found | +| instance_id | The instance to which the event belongs | 165460784409737834 | + + + diff --git a/docs/sidebars.js b/docs/sidebars.js index 59df0fac839..271d14a54f0 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -193,7 +193,15 @@ module.exports = { concepts: [ "concepts/introduction", "concepts/principles", - "concepts/eventstore", + { + type: "category", + label: "Eventstore", + collapsed: false, + items: [ + "concepts/eventstore/overview", + "concepts/eventstore/zitadel", + ], + }, "concepts/architecture", { type: "category", From a1d404291d365eb9ef71c15f2b8cc77abe295367 Mon Sep 17 00:00:00 2001 From: Livio Spring Date: Wed, 6 Jul 2022 14:09:49 +0200 Subject: [PATCH 02/17] fix(notify): notify user in projection (#3889) * start implement notify user in projection * fix(stmt): add copy to multi stmt * use projections for notify users * feat: notifications from projections * feat: notifications from projections * cleanup * pre-release * fix tests * fix types * fix command * fix queryNotifyUser * fix: build version * fix: HumanPasswordlessInitCodeSent Co-authored-by: adlerhurst --- .releaserc.js | 2 +- cmd/start/config.go | 2 - cmd/start/start.go | 2 +- internal/api/grpc/auth/user.go | 43 +- internal/api/grpc/management/user.go | 58 +- internal/command/user.go | 3 +- internal/command/user_membership.go | 30 +- internal/command/user_test.go | 13 +- internal/eventstore/handler/crdb/statement.go | 24 +- .../eventstore/handler/crdb/statement_test.go | 138 +++- internal/notification/notification.go | 38 - internal/notification/projection.go | 663 ++++++++++++++++++ .../eventsourcing/handler/handler.go | 89 --- .../eventsourcing/handler/notification.go | 637 ----------------- .../eventsourcing/handler/notify_user.go | 278 -------- .../repository/eventsourcing/repository.go | 56 -- .../repository/eventsourcing/spooler/lock.go | 20 - .../eventsourcing/spooler/spooler.go | 47 -- .../eventsourcing/view/error_event.go | 17 - .../eventsourcing/view/notification.go | 34 - .../eventsourcing/view/notify_user.go | 61 -- .../repository/eventsourcing/view/sequence.go | 38 - .../repository/eventsourcing/view/view.go | 25 - .../notification/repository/repository.go | 5 - .../notification/templates/templateData.go | 2 +- internal/notification/types/domain_claimed.go | 27 +- .../types/email_verification_code.go | 39 +- internal/notification/types/init_code.go | 45 +- internal/notification/types/notification.go | 73 ++ internal/notification/types/password_code.go | 47 +- .../types/passwordless_registration_link.go | 36 +- .../types/phone_verification_code.go | 36 +- internal/notification/types/templateData.go | 2 +- internal/notification/types/user_email.go | 37 +- internal/notification/types/user_phone.go | 13 +- internal/query/iam_member_test.go | 20 +- internal/query/org_member_test.go | 20 +- internal/query/project_grant_member_test.go | 20 +- internal/query/project_member_test.go | 20 +- internal/query/projection/label_policy.go | 26 + internal/query/projection/projection.go | 9 +- internal/query/projection/user.go | 134 +++- internal/query/projection/user_test.go | 258 +++++-- internal/query/user.go | 218 +++++- internal/query/user_grant_test.go | 40 +- internal/query/user_test.go | 412 ++++++++--- 46 files changed, 2018 insertions(+), 1839 deletions(-) delete mode 100644 internal/notification/notification.go create mode 100644 internal/notification/projection.go delete mode 100644 internal/notification/repository/eventsourcing/handler/handler.go delete mode 100644 internal/notification/repository/eventsourcing/handler/notification.go delete mode 100644 internal/notification/repository/eventsourcing/handler/notify_user.go delete mode 100644 internal/notification/repository/eventsourcing/repository.go delete mode 100644 internal/notification/repository/eventsourcing/spooler/lock.go delete mode 100644 internal/notification/repository/eventsourcing/spooler/spooler.go delete mode 100644 internal/notification/repository/eventsourcing/view/error_event.go delete mode 100644 internal/notification/repository/eventsourcing/view/notification.go delete mode 100644 internal/notification/repository/eventsourcing/view/notify_user.go delete mode 100644 internal/notification/repository/eventsourcing/view/sequence.go delete mode 100644 internal/notification/repository/eventsourcing/view/view.go delete mode 100644 internal/notification/repository/repository.go create mode 100644 internal/notification/types/notification.go diff --git a/.releaserc.js b/.releaserc.js index 309ca9e3a5e..5c4725f1cc8 100644 --- a/.releaserc.js +++ b/.releaserc.js @@ -3,7 +3,7 @@ module.exports = { {name: 'main'}, {name: '1.x.x', range: '1.x.x', channel: '1.x.x'}, {name: 'v2-alpha', prerelease: true}, - {name: 'update-projection-on-query', prerelease: true}, + {name: 'notify-users', prerelease: true}, ], plugins: [ "@semantic-release/commit-analyzer" diff --git a/cmd/start/config.go b/cmd/start/config.go index 179ab3ed4ac..ad7d1617041 100644 --- a/cmd/start/config.go +++ b/cmd/start/config.go @@ -20,7 +20,6 @@ import ( "github.com/zitadel/zitadel/internal/config/systemdefaults" "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/database" - "github.com/zitadel/zitadel/internal/notification" "github.com/zitadel/zitadel/internal/query/projection" static_config "github.com/zitadel/zitadel/internal/static/config" tracing "github.com/zitadel/zitadel/internal/telemetry/tracing/config" @@ -45,7 +44,6 @@ type Config struct { OIDC oidc.Config Login login.Config Console console.Config - Notification notification.Config AssetStorage static_config.AssetStorageConfig InternalAuthZ internal_authz.Config SystemDefaults systemdefaults.SystemDefaults diff --git a/cmd/start/start.go b/cmd/start/start.go index 1c2e2fdb4fa..313ef460e3f 100644 --- a/cmd/start/start.go +++ b/cmd/start/start.go @@ -139,7 +139,7 @@ func startZitadel(config *Config, masterKey string) error { return fmt.Errorf("cannot start commands: %w", err) } - notification.Start(config.Notification, config.ExternalPort, config.ExternalSecure, commands, queries, dbClient, assets.HandlerPrefix, config.SystemDefaults.Notifications.FileSystemPath, keys.User, keys.SMTP, keys.SMS) + notification.Start(ctx, config.Projections.Customizations["notifications"], config.ExternalPort, config.ExternalSecure, commands, queries, eventstoreClient, assets.AssetAPI(config.ExternalSecure), config.SystemDefaults.Notifications.FileSystemPath, keys.User, keys.SMTP, keys.SMS) router := mux.NewRouter() tlsConfig, err := config.TLS.Config() diff --git a/internal/api/grpc/auth/user.go b/internal/api/grpc/auth/user.go index 0650082477e..7f31b515673 100644 --- a/internal/api/grpc/auth/user.go +++ b/internal/api/grpc/auth/user.go @@ -9,6 +9,7 @@ import ( obj_grpc "github.com/zitadel/zitadel/internal/api/grpc/object" "github.com/zitadel/zitadel/internal/api/grpc/org" user_grpc "github.com/zitadel/zitadel/internal/api/grpc/user" + "github.com/zitadel/zitadel/internal/command" "github.com/zitadel/zitadel/internal/domain" "github.com/zitadel/zitadel/internal/eventstore/v1/models" "github.com/zitadel/zitadel/internal/query" @@ -45,7 +46,7 @@ func (s *Server) RemoveMyUser(ctx context.Context, _ *auth_pb.RemoveMyUserReques if err != nil { return nil, err } - details, err := s.command.RemoveUser(ctx, ctxData.UserID, ctxData.ResourceOwner, memberships.Memberships, userGrantsToIDs(grants.UserGrants)...) + details, err := s.command.RemoveUser(ctx, ctxData.UserID, ctxData.ResourceOwner, cascadingMemberships(memberships.Memberships), userGrantsToIDs(grants.UserGrants)...) if err != nil { return nil, err } @@ -277,6 +278,46 @@ func MemberTypeToDomain(m *query.Membership) (_ domain.MemberType, displayName, return domain.MemberTypeUnspecified, "", "", "" } +func cascadingMemberships(memberships []*query.Membership) []*command.CascadingMembership { + cascades := make([]*command.CascadingMembership, len(memberships)) + for i, membership := range memberships { + cascades[i] = &command.CascadingMembership{ + UserID: membership.UserID, + ResourceOwner: membership.ResourceOwner, + IAM: cascadingIAMMembership(membership.IAM), + Org: cascadingOrgMembership(membership.Org), + Project: cascadingProjectMembership(membership.Project), + ProjectGrant: cascadingProjectGrantMembership(membership.ProjectGrant), + } + } + return cascades +} + +func cascadingIAMMembership(membership *query.IAMMembership) *command.CascadingIAMMembership { + if membership == nil { + return nil + } + return &command.CascadingIAMMembership{IAMID: membership.IAMID} +} +func cascadingOrgMembership(membership *query.OrgMembership) *command.CascadingOrgMembership { + if membership == nil { + return nil + } + return &command.CascadingOrgMembership{OrgID: membership.OrgID} +} +func cascadingProjectMembership(membership *query.ProjectMembership) *command.CascadingProjectMembership { + if membership == nil { + return nil + } + return &command.CascadingProjectMembership{ProjectID: membership.ProjectID} +} +func cascadingProjectGrantMembership(membership *query.ProjectGrantMembership) *command.CascadingProjectGrantMembership { + if membership == nil { + return nil + } + return &command.CascadingProjectGrantMembership{ProjectID: membership.ProjectID, GrantID: membership.GrantID} +} + func userGrantsToIDs(userGrants []*query.UserGrant) []string { converted := make([]string, len(userGrants)) for i, grant := range userGrants { diff --git a/internal/api/grpc/management/user.go b/internal/api/grpc/management/user.go index ef58b87f333..5fd3bc78220 100644 --- a/internal/api/grpc/management/user.go +++ b/internal/api/grpc/management/user.go @@ -338,7 +338,7 @@ func (s *Server) RemoveUser(ctx context.Context, req *mgmt_pb.RemoveUserRequest) if err != nil { return nil, err } - objectDetails, err := s.command.RemoveUser(ctx, req.Id, authz.GetCtxData(ctx).OrgID, memberships.Memberships, userGrantsToIDs(grants.UserGrants)...) + objectDetails, err := s.command.RemoveUser(ctx, req.Id, authz.GetCtxData(ctx).OrgID, cascadingMemberships(memberships.Memberships), userGrantsToIDs(grants.UserGrants)...) if err != nil { return nil, err } @@ -347,14 +347,6 @@ func (s *Server) RemoveUser(ctx context.Context, req *mgmt_pb.RemoveUserRequest) }, nil } -func userGrantsToIDs(userGrants []*query.UserGrant) []string { - converted := make([]string, len(userGrants)) - for i, grant := range userGrants { - converted[i] = grant.ID - } - return converted -} - func (s *Server) UpdateUserName(ctx context.Context, req *mgmt_pb.UpdateUserNameRequest) (*mgmt_pb.UpdateUserNameResponse, error) { objectDetails, err := s.command.ChangeUsername(ctx, authz.GetCtxData(ctx).OrgID, req.UserId, req.UserName) if err != nil { @@ -860,3 +852,51 @@ func (s *Server) ListUserMemberships(ctx context.Context, req *mgmt_pb.ListUserM Details: obj_grpc.ToListDetails(response.Count, response.Sequence, response.Timestamp), }, nil } + +func cascadingMemberships(memberships []*query.Membership) []*command.CascadingMembership { + cascades := make([]*command.CascadingMembership, len(memberships)) + for i, membership := range memberships { + cascades[i] = &command.CascadingMembership{ + UserID: membership.UserID, + ResourceOwner: membership.ResourceOwner, + IAM: cascadingIAMMembership(membership.IAM), + Org: cascadingOrgMembership(membership.Org), + Project: cascadingProjectMembership(membership.Project), + ProjectGrant: cascadingProjectGrantMembership(membership.ProjectGrant), + } + } + return cascades +} + +func cascadingIAMMembership(membership *query.IAMMembership) *command.CascadingIAMMembership { + if membership == nil { + return nil + } + return &command.CascadingIAMMembership{IAMID: membership.IAMID} +} +func cascadingOrgMembership(membership *query.OrgMembership) *command.CascadingOrgMembership { + if membership == nil { + return nil + } + return &command.CascadingOrgMembership{OrgID: membership.OrgID} +} +func cascadingProjectMembership(membership *query.ProjectMembership) *command.CascadingProjectMembership { + if membership == nil { + return nil + } + return &command.CascadingProjectMembership{ProjectID: membership.ProjectID} +} +func cascadingProjectGrantMembership(membership *query.ProjectGrantMembership) *command.CascadingProjectGrantMembership { + if membership == nil { + return nil + } + return &command.CascadingProjectGrantMembership{ProjectID: membership.ProjectID, GrantID: membership.GrantID} +} + +func userGrantsToIDs(userGrants []*query.UserGrant) []string { + converted := make([]string, len(userGrants)) + for i, grant := range userGrants { + converted[i] = grant.ID + } + return converted +} diff --git a/internal/command/user.go b/internal/command/user.go index be5b8bec944..a4f33a1fb5d 100644 --- a/internal/command/user.go +++ b/internal/command/user.go @@ -14,7 +14,6 @@ import ( caos_errs "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/eventstore" "github.com/zitadel/zitadel/internal/eventstore/v1/models" - "github.com/zitadel/zitadel/internal/query" "github.com/zitadel/zitadel/internal/repository/user" "github.com/zitadel/zitadel/internal/telemetry/tracing" ) @@ -174,7 +173,7 @@ func (c *Commands) UnlockUser(ctx context.Context, userID, resourceOwner string) return writeModelToObjectDetails(&existingUser.WriteModel), nil } -func (c *Commands) RemoveUser(ctx context.Context, userID, resourceOwner string, cascadingUserMemberships []*query.Membership, cascadingGrantIDs ...string) (*domain.ObjectDetails, error) { +func (c *Commands) RemoveUser(ctx context.Context, userID, resourceOwner string, cascadingUserMemberships []*CascadingMembership, cascadingGrantIDs ...string) (*domain.ObjectDetails, error) { if userID == "" { return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-2M0ds", "Errors.User.UserIDMissing") } diff --git a/internal/command/user_membership.go b/internal/command/user_membership.go index db1831f4ead..3bc68dd4be5 100644 --- a/internal/command/user_membership.go +++ b/internal/command/user_membership.go @@ -4,13 +4,39 @@ import ( "context" "github.com/zitadel/zitadel/internal/eventstore" - "github.com/zitadel/zitadel/internal/query" "github.com/zitadel/zitadel/internal/repository/instance" "github.com/zitadel/zitadel/internal/repository/org" "github.com/zitadel/zitadel/internal/repository/project" ) -func (c *Commands) removeUserMemberships(ctx context.Context, memberships []*query.Membership) (_ []eventstore.Command, err error) { +type CascadingMembership struct { + UserID string + ResourceOwner string + + IAM *CascadingIAMMembership + Org *CascadingOrgMembership + Project *CascadingProjectMembership + ProjectGrant *CascadingProjectGrantMembership +} + +type CascadingIAMMembership struct { + IAMID string +} + +type CascadingOrgMembership struct { + OrgID string +} + +type CascadingProjectMembership struct { + ProjectID string +} + +type CascadingProjectGrantMembership struct { + ProjectID string + GrantID string +} + +func (c *Commands) removeUserMemberships(ctx context.Context, memberships []*CascadingMembership) (_ []eventstore.Command, err error) { events := make([]eventstore.Command, 0) for _, membership := range memberships { if membership.IAM != nil { diff --git a/internal/command/user_test.go b/internal/command/user_test.go index 3d8c347442a..383d7205dfd 100644 --- a/internal/command/user_test.go +++ b/internal/command/user_test.go @@ -19,7 +19,6 @@ import ( "github.com/zitadel/zitadel/internal/eventstore" "github.com/zitadel/zitadel/internal/eventstore/repository" "github.com/zitadel/zitadel/internal/id" - "github.com/zitadel/zitadel/internal/query" "github.com/zitadel/zitadel/internal/repository/instance" "github.com/zitadel/zitadel/internal/repository/user" ) @@ -929,7 +928,7 @@ func TestCommandSide_RemoveUser(t *testing.T) { instanceID string orgID string userID string - cascadeUserMemberships []*query.Membership + cascadeUserMemberships []*CascadingMembership cascadeUserGrants []string } ) @@ -1215,16 +1214,16 @@ func TestCommandSide_RemoveUser(t *testing.T) { ctx: context.Background(), orgID: "org1", userID: "user1", - cascadeUserMemberships: []*query.Membership{ + cascadeUserMemberships: []*CascadingMembership{ { - IAM: &query.IAMMembership{ + IAM: &CascadingIAMMembership{ IAMID: "INSTANCE", }, UserID: "user1", ResourceOwner: "org1", }, { - Org: &query.OrgMembership{ + Org: &CascadingOrgMembership{ OrgID: "org1", }, UserID: "user1", @@ -1232,14 +1231,14 @@ func TestCommandSide_RemoveUser(t *testing.T) { }, { - Project: &query.ProjectMembership{ + Project: &CascadingProjectMembership{ ProjectID: "project1", }, UserID: "user1", ResourceOwner: "org1", }, { - ProjectGrant: &query.ProjectGrantMembership{ + ProjectGrant: &CascadingProjectGrantMembership{ ProjectID: "project1", GrantID: "grant1", }, diff --git a/internal/eventstore/handler/crdb/statement.go b/internal/eventstore/handler/crdb/statement.go index 5b544c6909a..c4bc2db9d57 100644 --- a/internal/eventstore/handler/crdb/statement.go +++ b/internal/eventstore/handler/crdb/statement.go @@ -189,6 +189,12 @@ func AddDeleteStatement(conditions []handler.Condition, opts ...execOption) func } } +func AddCopyStatement(from, to []handler.Column, conditions []handler.Condition, opts ...execOption) func(eventstore.Event) Exec { + return func(event eventstore.Event) Exec { + return NewCopyStatement(event, from, to, conditions, opts...).Execute + } +} + func NewArrayAppendCol(column string, value interface{}) handler.Column { return handler.Column{ Name: column, @@ -233,19 +239,19 @@ func NewArrayIntersectCol(column string, value interface{}) handler.Column { // if the value of a col is empty the data will be copied from the selected row // if the value of a col is not empty the data will be set by the static value // conds represent the conditions for the selection subquery -func NewCopyStatement(event eventstore.Event, cols []handler.Column, conds []handler.Condition, opts ...execOption) *handler.Statement { - columnNames := make([]string, len(cols)) - selectColumns := make([]string, len(cols)) +func NewCopyStatement(event eventstore.Event, from, to []handler.Column, conds []handler.Condition, opts ...execOption) *handler.Statement { + columnNames := make([]string, len(to)) + selectColumns := make([]string, len(from)) argCounter := 0 args := []interface{}{} - for i, col := range cols { - columnNames[i] = col.Name - selectColumns[i] = col.Name - if col.Value != nil { + for i := range from { + columnNames[i] = to[i].Name + selectColumns[i] = from[i].Name + if from[i].Value != nil { argCounter++ selectColumns[i] = "$" + strconv.Itoa(argCounter) - args = append(args, col.Value) + args = append(args, from[i].Value) } } @@ -260,7 +266,7 @@ func NewCopyStatement(event eventstore.Event, cols []handler.Column, conds []han args: args, } - if len(cols) == 0 { + if len(from) == 0 || len(to) == 0 || len(from) != len(to) { config.err = handler.ErrNoValues } diff --git a/internal/eventstore/handler/crdb/statement_test.go b/internal/eventstore/handler/crdb/statement_test.go index 8b5e33f2669..a4bea292614 100644 --- a/internal/eventstore/handler/crdb/statement_test.go +++ b/internal/eventstore/handler/crdb/statement_test.go @@ -801,7 +801,8 @@ func TestNewCopyStatement(t *testing.T) { type args struct { table string event *testEvent - cols []handler.Column + from []handler.Column + to []handler.Column conds []handler.Condition } type want struct { @@ -856,7 +857,12 @@ func TestNewCopyStatement(t *testing.T) { previousSequence: 0, }, conds: []handler.Condition{}, - cols: []handler.Column{ + from: []handler.Column{ + { + Name: "col", + }, + }, + to: []handler.Column{ { Name: "col", }, @@ -876,7 +882,44 @@ func TestNewCopyStatement(t *testing.T) { }, }, { - name: "no values", + name: "more to than from cols", + args: args{ + table: "my_table", + event: &testEvent{ + aggregateType: "agg", + sequence: 1, + previousSequence: 0, + }, + conds: []handler.Condition{}, + from: []handler.Column{ + { + Name: "col", + }, + }, + to: []handler.Column{ + { + Name: "col", + }, + { + Name: "col2", + }, + }, + }, + want: want{ + table: "my_table", + aggregateType: "agg", + sequence: 1, + previousSequence: 1, + executer: &wantExecuter{ + shouldExecute: false, + }, + isErr: func(err error) bool { + return errors.Is(err, handler.ErrNoCondition) + }, + }, + }, + { + name: "no columns", args: args{ table: "my_table", event: &testEvent{ @@ -889,7 +932,7 @@ func TestNewCopyStatement(t *testing.T) { Name: "col", }, }, - cols: []handler.Column{}, + from: []handler.Column{}, }, want: want{ table: "my_table", @@ -905,7 +948,7 @@ func TestNewCopyStatement(t *testing.T) { }, }, { - name: "correct", + name: "correct same column names", args: args{ table: "my_table", event: &testEvent{ @@ -913,7 +956,7 @@ func TestNewCopyStatement(t *testing.T) { sequence: 1, previousSequence: 0, }, - cols: []handler.Column{ + from: []handler.Column{ { Name: "state", Value: 1, @@ -928,6 +971,20 @@ func TestNewCopyStatement(t *testing.T) { Name: "col_b", }, }, + to: []handler.Column{ + { + Name: "state", + }, + { + Name: "id", + }, + { + Name: "col_a", + }, + { + Name: "col_b", + }, + }, conds: []handler.Condition{ { Name: "id", @@ -958,11 +1015,78 @@ func TestNewCopyStatement(t *testing.T) { }, }, }, + { + name: "correct different column names", + args: args{ + table: "my_table", + event: &testEvent{ + aggregateType: "agg", + sequence: 1, + previousSequence: 0, + }, + from: []handler.Column{ + { + Value: 1, + }, + { + Name: "id", + }, + { + Name: "col_a", + }, + { + Name: "col_b", + }, + }, + to: []handler.Column{ + { + Name: "state", + }, + { + Name: "id", + }, + { + Name: "col_c", + }, + { + Name: "col_d", + }, + }, + conds: []handler.Condition{ + { + Name: "id", + Value: 2, + }, + { + Name: "state", + Value: 3, + }, + }, + }, + want: want{ + table: "my_table", + aggregateType: "agg", + sequence: 1, + previousSequence: 1, + executer: &wantExecuter{ + params: []params{ + { + query: "UPSERT INTO my_table (state, id, col_c, col_d) SELECT $1, id, col_a, col_b FROM my_table AS copy_table WHERE copy_table.id = $2 AND copy_table.state = $3", + args: []interface{}{1, 2, 3}, + }, + }, + shouldExecute: true, + }, + isErr: func(err error) bool { + return err == nil + }, + }, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { tt.want.executer.t = t - stmt := NewCopyStatement(tt.args.event, tt.args.cols, tt.args.conds) + stmt := NewCopyStatement(tt.args.event, tt.args.from, tt.args.to, tt.args.conds) err := stmt.Execute(tt.want.executer, tt.args.table) if !tt.want.isErr(err) { diff --git a/internal/notification/notification.go b/internal/notification/notification.go deleted file mode 100644 index 2475279bfde..00000000000 --- a/internal/notification/notification.go +++ /dev/null @@ -1,38 +0,0 @@ -package notification - -import ( - "database/sql" - - "github.com/rakyll/statik/fs" - "github.com/zitadel/logging" - - "github.com/zitadel/zitadel/internal/crypto" - - "github.com/zitadel/zitadel/internal/command" - "github.com/zitadel/zitadel/internal/notification/repository/eventsourcing" - _ "github.com/zitadel/zitadel/internal/notification/statik" - "github.com/zitadel/zitadel/internal/query" -) - -type Config struct { - Repository eventsourcing.Config -} - -func Start(config Config, - externalPort uint16, - externalSecure bool, - command *command.Commands, - queries *query.Queries, - dbClient *sql.DB, - assetsPrefix, - fileSystemPath string, - userEncryption crypto.EncryptionAlgorithm, - smtpEncryption crypto.EncryptionAlgorithm, - smsEncryption crypto.EncryptionAlgorithm, -) { - statikFS, err := fs.NewWithNamespace("notification") - logging.OnError(err).Panic("unable to start listener") - - _, err = eventsourcing.Start(config.Repository, statikFS, externalPort, externalSecure, command, queries, dbClient, assetsPrefix, fileSystemPath, userEncryption, smtpEncryption, smsEncryption) - logging.OnError(err).Panic("unable to start app") -} diff --git a/internal/notification/projection.go b/internal/notification/projection.go new file mode 100644 index 00000000000..17452e2d991 --- /dev/null +++ b/internal/notification/projection.go @@ -0,0 +1,663 @@ +package notification + +import ( + "context" + "net/http" + "time" + + statik_fs "github.com/rakyll/statik/fs" + "github.com/zitadel/logging" + + "github.com/zitadel/zitadel/internal/api/authz" + http_utils "github.com/zitadel/zitadel/internal/api/http" + "github.com/zitadel/zitadel/internal/command" + "github.com/zitadel/zitadel/internal/crypto" + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/errors" + "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/eventstore/handler" + "github.com/zitadel/zitadel/internal/eventstore/handler/crdb" + "github.com/zitadel/zitadel/internal/i18n" + "github.com/zitadel/zitadel/internal/notification/channels/fs" + "github.com/zitadel/zitadel/internal/notification/channels/log" + "github.com/zitadel/zitadel/internal/notification/channels/smtp" + "github.com/zitadel/zitadel/internal/notification/channels/twilio" + _ "github.com/zitadel/zitadel/internal/notification/statik" + "github.com/zitadel/zitadel/internal/notification/types" + "github.com/zitadel/zitadel/internal/query" + "github.com/zitadel/zitadel/internal/query/projection" + "github.com/zitadel/zitadel/internal/repository/user" +) + +const ( + NotificationsProjectionTable = "projections.notifications" + NotifyUserID = "NOTIFICATION" //TODO: system? +) + +func Start(ctx context.Context, customConfig projection.CustomConfig, externalPort uint16, externalSecure bool, commands *command.Commands, queries *query.Queries, es *eventstore.Eventstore, assetsPrefix func(context.Context) string, fileSystemPath string, userEncryption, smtpEncryption, smsEncryption crypto.EncryptionAlgorithm) { + statikFS, err := statik_fs.NewWithNamespace("notification") + logging.OnError(err).Panic("unable to start listener") + + projection.NotificationsProjection = newNotificationsProjection(ctx, projection.ApplyCustomConfig(customConfig), commands, queries, es, userEncryption, smtpEncryption, smsEncryption, externalSecure, externalPort, fileSystemPath, assetsPrefix, statikFS) +} + +type notificationsProjection struct { + crdb.StatementHandler + commands *command.Commands + queries *query.Queries + es *eventstore.Eventstore + userDataCrypto crypto.EncryptionAlgorithm + smtpPasswordCrypto crypto.EncryptionAlgorithm + smsTokenCrypto crypto.EncryptionAlgorithm + assetsPrefix func(context.Context) string + fileSystemPath string + externalPort uint16 + externalSecure bool + statikDir http.FileSystem +} + +func newNotificationsProjection( + ctx context.Context, + config crdb.StatementHandlerConfig, + commands *command.Commands, + queries *query.Queries, + es *eventstore.Eventstore, + userDataCrypto, + smtpPasswordCrypto, + smsTokenCrypto crypto.EncryptionAlgorithm, + externalSecure bool, + externalPort uint16, + fileSystemPath string, + assetsPrefix func(context.Context) string, + statikDir http.FileSystem, +) *notificationsProjection { + p := new(notificationsProjection) + config.ProjectionName = NotificationsProjectionTable + config.Reducers = p.reducers() + p.StatementHandler = crdb.NewStatementHandler(ctx, config) + p.commands = commands + p.queries = queries + p.es = es + p.userDataCrypto = userDataCrypto + p.smtpPasswordCrypto = smtpPasswordCrypto + p.smsTokenCrypto = smsTokenCrypto + p.assetsPrefix = assetsPrefix + p.externalPort = externalPort + p.externalSecure = externalSecure + p.fileSystemPath = fileSystemPath + p.statikDir = statikDir + + return p +} + +func (p *notificationsProjection) reducers() []handler.AggregateReducer { + return []handler.AggregateReducer{ + { + Aggregate: user.AggregateType, + EventRedusers: []handler.EventReducer{ + { + Event: user.UserV1InitialCodeAddedType, + Reduce: p.reduceInitCodeAdded, + }, + { + Event: user.HumanInitialCodeAddedType, + Reduce: p.reduceInitCodeAdded, + }, + { + Event: user.UserV1EmailCodeAddedType, + Reduce: p.reduceEmailCodeAdded, + }, + { + Event: user.HumanEmailCodeAddedType, + Reduce: p.reduceEmailCodeAdded, + }, + { + Event: user.UserV1PasswordCodeAddedType, + Reduce: p.reducePasswordCodeAdded, + }, + { + Event: user.HumanPasswordCodeAddedType, + Reduce: p.reducePasswordCodeAdded, + }, + { + Event: user.UserDomainClaimedType, + Reduce: p.reduceDomainClaimed, + }, + { + Event: user.HumanPasswordlessInitCodeRequestedType, + Reduce: p.reducePasswordlessCodeRequested, + }, + { + Event: user.UserV1PhoneCodeAddedType, + Reduce: p.reducePhoneCodeAdded, + }, + { + Event: user.HumanPhoneCodeAddedType, + Reduce: p.reducePhoneCodeAdded, + }, + }, + }, + } +} + +func (p *notificationsProjection) reduceInitCodeAdded(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*user.HumanInitialCodeAddedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-EFe2f", "reduce.wrong.event.type %s", user.HumanInitialCodeAddedType) + } + ctx := setNotificationContext(event.Aggregate()) + alreadyHandled, err := p.checkIfCodeAlreadyHandledOrExpired(ctx, event, e.Expiry, nil, + user.UserV1InitialCodeAddedType, user.UserV1InitialCodeSentType, + user.HumanInitialCodeAddedType, user.HumanInitialCodeSentType) + if err != nil { + return nil, err + } + if alreadyHandled { + return crdb.NewNoOpStatement(e), nil + } + code, err := crypto.DecryptString(e.Code, p.userDataCrypto) + if err != nil { + return nil, err + } + colors, err := p.queries.ActiveLabelPolicyByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + template, err := p.queries.MailTemplateByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + notifyUser, err := p.queries.GeNotifyUser(ctx, true, e.Aggregate().ID) + if err != nil { + return nil, err + } + translator, err := p.getTranslatorWithOrgTexts(ctx, notifyUser.ResourceOwner, domain.InitCodeMessageType) + if err != nil { + return nil, err + } + + origin, err := p.origin(ctx) + if err != nil { + return nil, err + } + err = types.SendEmail( + ctx, + string(template.Template), + translator, + notifyUser, + p.getSMTPConfig, + p.getFileSystemProvider, + p.getLogProvider, + colors, + p.assetsPrefix(ctx), + ).SendUserInitCode(notifyUser, origin, code) + if err != nil { + return nil, err + } + err = p.commands.HumanInitCodeSent(ctx, e.Aggregate().ResourceOwner, e.Aggregate().ID) + if err != nil { + return nil, err + } + return crdb.NewNoOpStatement(e), nil +} + +func (p *notificationsProjection) reduceEmailCodeAdded(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*user.HumanEmailCodeAddedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SWf3g", "reduce.wrong.event.type %s", user.HumanEmailCodeAddedType) + } + ctx := setNotificationContext(event.Aggregate()) + alreadyHandled, err := p.checkIfCodeAlreadyHandledOrExpired(ctx, event, e.Expiry, nil, + user.UserV1EmailCodeAddedType, user.UserV1EmailCodeSentType, + user.HumanEmailCodeAddedType, user.HumanEmailCodeSentType) + if err != nil { + return nil, err + } + if alreadyHandled { + return crdb.NewNoOpStatement(e), nil + } + code, err := crypto.DecryptString(e.Code, p.userDataCrypto) + if err != nil { + return nil, err + } + colors, err := p.queries.ActiveLabelPolicyByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + template, err := p.queries.MailTemplateByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + notifyUser, err := p.queries.GeNotifyUser(ctx, true, e.Aggregate().ID) + if err != nil { + return nil, err + } + translator, err := p.getTranslatorWithOrgTexts(ctx, notifyUser.ResourceOwner, domain.VerifyEmailMessageType) + if err != nil { + return nil, err + } + + origin, err := p.origin(ctx) + if err != nil { + return nil, err + } + err = types.SendEmail( + ctx, + string(template.Template), + translator, + notifyUser, + p.getSMTPConfig, + p.getFileSystemProvider, + p.getLogProvider, + colors, + p.assetsPrefix(ctx), + ).SendEmailVerificationCode(notifyUser, origin, code) + if err != nil { + return nil, err + } + err = p.commands.HumanEmailVerificationCodeSent(ctx, e.Aggregate().ResourceOwner, e.Aggregate().ID) + if err != nil { + return nil, err + } + return crdb.NewNoOpStatement(e), nil +} + +func (p *notificationsProjection) reducePasswordCodeAdded(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*user.HumanPasswordCodeAddedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Eeg3s", "reduce.wrong.event.type %s", user.HumanPasswordCodeAddedType) + } + ctx := setNotificationContext(event.Aggregate()) + alreadyHandled, err := p.checkIfCodeAlreadyHandledOrExpired(ctx, event, e.Expiry, nil, + user.UserV1PasswordCodeAddedType, user.UserV1PasswordCodeSentType, + user.HumanPasswordCodeAddedType, user.HumanPasswordCodeSentType) + if err != nil { + return nil, err + } + if alreadyHandled { + return crdb.NewNoOpStatement(e), nil + } + code, err := crypto.DecryptString(e.Code, p.userDataCrypto) + if err != nil { + return nil, err + } + colors, err := p.queries.ActiveLabelPolicyByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + template, err := p.queries.MailTemplateByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + notifyUser, err := p.queries.GeNotifyUser(ctx, true, e.Aggregate().ID) + if err != nil { + return nil, err + } + translator, err := p.getTranslatorWithOrgTexts(ctx, notifyUser.ResourceOwner, domain.PasswordResetMessageType) + if err != nil { + return nil, err + } + + origin, err := p.origin(ctx) + if err != nil { + return nil, err + } + notify := types.SendEmail( + ctx, + string(template.Template), + translator, + notifyUser, + p.getSMTPConfig, + p.getFileSystemProvider, + p.getLogProvider, + colors, + p.assetsPrefix(ctx), + ) + if e.NotificationType == domain.NotificationTypeSms { + notify = types.SendSMSTwilio( + ctx, + translator, + notifyUser, + p.getTwilioConfig, + p.getFileSystemProvider, + p.getLogProvider, + colors, + p.assetsPrefix(ctx), + ) + } + err = notify.SendPasswordCode(notifyUser, origin, code) + if err != nil { + return nil, err + } + err = p.commands.PasswordCodeSent(ctx, e.Aggregate().ResourceOwner, e.Aggregate().ID) + if err != nil { + return nil, err + } + return crdb.NewNoOpStatement(e), nil +} + +func (p *notificationsProjection) reduceDomainClaimed(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*user.DomainClaimedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Drh5w", "reduce.wrong.event.type %s", user.UserDomainClaimedType) + } + ctx := setNotificationContext(event.Aggregate()) + alreadyHandled, err := p.checkIfAlreadyHandled(ctx, event, nil, + user.UserDomainClaimedType, user.UserDomainClaimedSentType) + if err != nil { + return nil, err + } + if alreadyHandled { + return crdb.NewNoOpStatement(e), nil + } + colors, err := p.queries.ActiveLabelPolicyByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + template, err := p.queries.MailTemplateByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + notifyUser, err := p.queries.GeNotifyUser(ctx, true, e.Aggregate().ID) + if err != nil { + return nil, err + } + translator, err := p.getTranslatorWithOrgTexts(ctx, notifyUser.ResourceOwner, domain.DomainClaimedMessageType) + if err != nil { + return nil, err + } + + origin, err := p.origin(ctx) + if err != nil { + return nil, err + } + err = types.SendEmail( + ctx, + string(template.Template), + translator, + notifyUser, + p.getSMTPConfig, + p.getFileSystemProvider, + p.getLogProvider, + colors, + p.assetsPrefix(ctx), + ).SendDomainClaimed(notifyUser, origin, e.UserName) + if err != nil { + return nil, err + } + err = p.commands.UserDomainClaimedSent(ctx, e.Aggregate().ResourceOwner, e.Aggregate().ID) + if err != nil { + return nil, err + } + return crdb.NewNoOpStatement(e), nil +} + +func (p *notificationsProjection) reducePasswordlessCodeRequested(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*user.HumanPasswordlessInitCodeRequestedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-EDtjd", "reduce.wrong.event.type %s", user.HumanPasswordlessInitCodeAddedType) + } + ctx := setNotificationContext(event.Aggregate()) + alreadyHandled, err := p.checkIfCodeAlreadyHandledOrExpired(ctx, event, e.Expiry, map[string]interface{}{"id": e.ID}, user.HumanPasswordlessInitCodeSentType) + if err != nil { + return nil, err + } + if alreadyHandled { + return crdb.NewNoOpStatement(e), nil + } + code, err := crypto.DecryptString(e.Code, p.userDataCrypto) + if err != nil { + return nil, err + } + colors, err := p.queries.ActiveLabelPolicyByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + template, err := p.queries.MailTemplateByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + notifyUser, err := p.queries.GeNotifyUser(ctx, true, e.Aggregate().ID) + if err != nil { + return nil, err + } + translator, err := p.getTranslatorWithOrgTexts(ctx, notifyUser.ResourceOwner, domain.PasswordlessRegistrationMessageType) + if err != nil { + return nil, err + } + + origin, err := p.origin(ctx) + if err != nil { + return nil, err + } + err = types.SendEmail( + ctx, + string(template.Template), + translator, + notifyUser, + p.getSMTPConfig, + p.getFileSystemProvider, + p.getLogProvider, + colors, + p.assetsPrefix(ctx), + ).SendPasswordlessRegistrationLink(notifyUser, origin, code, e.ID) + if err != nil { + return nil, err + } + err = p.commands.HumanPasswordlessInitCodeSent(ctx, e.Aggregate().ID, e.Aggregate().ResourceOwner, e.ID) + if err != nil { + return nil, err + } + return crdb.NewNoOpStatement(e), nil +} + +func (p *notificationsProjection) reducePhoneCodeAdded(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*user.HumanPhoneCodeAddedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-He83g", "reduce.wrong.event.type %s", user.HumanPhoneCodeAddedType) + } + ctx := setNotificationContext(event.Aggregate()) + alreadyHandled, err := p.checkIfCodeAlreadyHandledOrExpired(ctx, event, e.Expiry, nil, + user.UserV1PhoneCodeAddedType, user.UserV1PhoneCodeSentType, + user.HumanPhoneCodeAddedType, user.HumanPhoneCodeSentType) + if err != nil { + return nil, err + } + if alreadyHandled { + return crdb.NewNoOpStatement(e), nil + } + code, err := crypto.DecryptString(e.Code, p.userDataCrypto) + if err != nil { + return nil, err + } + colors, err := p.queries.ActiveLabelPolicyByOrg(ctx, e.Aggregate().ResourceOwner) + if err != nil { + return nil, err + } + + notifyUser, err := p.queries.GeNotifyUser(ctx, true, e.Aggregate().ID) + if err != nil { + return nil, err + } + translator, err := p.getTranslatorWithOrgTexts(ctx, notifyUser.ResourceOwner, domain.VerifyPhoneMessageType) + if err != nil { + return nil, err + } + + origin, err := p.origin(ctx) + if err != nil { + return nil, err + } + err = types.SendSMSTwilio( + ctx, + translator, + notifyUser, + p.getTwilioConfig, + p.getFileSystemProvider, + p.getLogProvider, + colors, + p.assetsPrefix(ctx), + ).SendPhoneVerificationCode(notifyUser, origin, code) + if err != nil { + return nil, err + } + err = p.commands.HumanPhoneVerificationCodeSent(ctx, e.Aggregate().ResourceOwner, e.Aggregate().ID) + if err != nil { + return nil, err + } + return crdb.NewNoOpStatement(e), nil +} + +func (p *notificationsProjection) checkIfCodeAlreadyHandledOrExpired(ctx context.Context, event eventstore.Event, expiry time.Duration, data map[string]interface{}, eventTypes ...eventstore.EventType) (bool, error) { + if event.CreationDate().Add(expiry).Before(time.Now().UTC()) { + return true, nil + } + return p.checkIfAlreadyHandled(ctx, event, data, eventTypes...) +} + +func (p *notificationsProjection) checkIfAlreadyHandled(ctx context.Context, event eventstore.Event, data map[string]interface{}, eventTypes ...eventstore.EventType) (bool, error) { + events, err := p.es.Filter( + ctx, + eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent). + InstanceID(event.Aggregate().InstanceID). + AddQuery(). + AggregateTypes(user.AggregateType). + AggregateIDs(event.Aggregate().ID). + SequenceGreater(event.Sequence()). + EventTypes(eventTypes...). + EventData(data). + Builder(), + ) + if err != nil { + return false, err + } + return len(events) > 0, nil +} +func (p *notificationsProjection) getSMTPConfig(ctx context.Context) (*smtp.EmailConfig, error) { + config, err := p.queries.SMTPConfigByAggregateID(ctx, authz.GetInstance(ctx).InstanceID()) + if err != nil { + return nil, err + } + password, err := crypto.DecryptString(config.Password, p.smtpPasswordCrypto) + if err != nil { + return nil, err + } + return &smtp.EmailConfig{ + From: config.SenderAddress, + FromName: config.SenderName, + Tls: config.TLS, + SMTP: smtp.SMTP{ + Host: config.Host, + User: config.User, + Password: password, + }, + }, nil +} + +// Read iam twilio config +func (p *notificationsProjection) getTwilioConfig(ctx context.Context) (*twilio.TwilioConfig, error) { + active, err := query.NewSMSProviderStateQuery(domain.SMSConfigStateActive) + if err != nil { + return nil, err + } + config, err := p.queries.SMSProviderConfig(ctx, active) + if err != nil { + return nil, err + } + if config.TwilioConfig == nil { + return nil, errors.ThrowNotFound(nil, "HANDLER-8nfow", "Errors.SMS.Twilio.NotFound") + } + token, err := crypto.DecryptString(config.TwilioConfig.Token, p.smsTokenCrypto) + if err != nil { + return nil, err + } + return &twilio.TwilioConfig{ + SID: config.TwilioConfig.SID, + Token: token, + SenderNumber: config.TwilioConfig.SenderNumber, + }, nil +} + +// Read iam filesystem provider config +func (p *notificationsProjection) getFileSystemProvider(ctx context.Context) (*fs.FSConfig, error) { + config, err := p.queries.NotificationProviderByIDAndType(ctx, authz.GetInstance(ctx).InstanceID(), domain.NotificationProviderTypeFile) + if err != nil { + return nil, err + } + return &fs.FSConfig{ + Compact: config.Compact, + Path: p.fileSystemPath, + }, nil +} + +// Read iam log provider config +func (p *notificationsProjection) getLogProvider(ctx context.Context) (*log.LogConfig, error) { + config, err := p.queries.NotificationProviderByIDAndType(ctx, authz.GetInstance(ctx).InstanceID(), domain.NotificationProviderTypeLog) + if err != nil { + return nil, err + } + return &log.LogConfig{ + Compact: config.Compact, + }, nil +} + +func (p *notificationsProjection) getTranslatorWithOrgTexts(ctx context.Context, orgID, textType string) (*i18n.Translator, error) { + translator, err := i18n.NewTranslator(p.statikDir, p.queries.GetDefaultLanguage(ctx), "") + if err != nil { + return nil, err + } + + allCustomTexts, err := p.queries.CustomTextListByTemplate(ctx, authz.GetInstance(ctx).InstanceID(), textType) + if err != nil { + return translator, nil + } + customTexts, err := p.queries.CustomTextListByTemplate(ctx, orgID, textType) + if err != nil { + return translator, nil + } + allCustomTexts.CustomTexts = append(allCustomTexts.CustomTexts, customTexts.CustomTexts...) + + for _, text := range allCustomTexts.CustomTexts { + msg := i18n.Message{ + ID: text.Template + "." + text.Key, + Text: text.Text, + } + err = translator.AddMessages(text.Language, msg) + logging.WithFields("instanceID", authz.GetInstance(ctx).InstanceID(), "orgID", orgID, "messageType", textType, "messageID", msg.ID). + OnError(err). + Warn("could not add translation message") + } + return translator, nil +} + +func (p *notificationsProjection) origin(ctx context.Context) (string, error) { + primary, err := query.NewInstanceDomainPrimarySearchQuery(true) + if err != nil { + return "", err + } + domains, err := p.queries.SearchInstanceDomains(ctx, &query.InstanceDomainSearchQueries{ + Queries: []query.SearchQuery{primary}, + }) + if err != nil { + return "", err + } + if len(domains.Domains) < 1 { + return "", errors.ThrowInternal(nil, "NOTIF-Ef3r1", "Errors.Notification.NoDomain") + } + return http_utils.BuildHTTP(domains.Domains[0].Domain, p.externalPort, p.externalSecure), nil +} + +func setNotificationContext(event eventstore.Aggregate) context.Context { + ctx := authz.WithInstanceID(context.Background(), event.InstanceID) + return authz.SetCtxData(ctx, authz.CtxData{UserID: NotifyUserID, OrgID: event.ResourceOwner}) +} diff --git a/internal/notification/repository/eventsourcing/handler/handler.go b/internal/notification/repository/eventsourcing/handler/handler.go deleted file mode 100644 index 303757f81de..00000000000 --- a/internal/notification/repository/eventsourcing/handler/handler.go +++ /dev/null @@ -1,89 +0,0 @@ -package handler - -import ( - "net/http" - "time" - - "github.com/zitadel/zitadel/internal/command" - "github.com/zitadel/zitadel/internal/crypto" - v1 "github.com/zitadel/zitadel/internal/eventstore/v1" - queryv1 "github.com/zitadel/zitadel/internal/eventstore/v1/query" - "github.com/zitadel/zitadel/internal/notification/repository/eventsourcing/view" - "github.com/zitadel/zitadel/internal/query" -) - -type Configs map[string]*Config - -type Config struct { - MinimumCycleDuration time.Duration -} - -type handler struct { - view *view.View - bulkLimit uint64 - cycleDuration time.Duration - errorCountUntilSkip uint64 - - es v1.Eventstore -} - -func (h *handler) Eventstore() v1.Eventstore { - return h.es -} - -func Register(configs Configs, - bulkLimit, - errorCount uint64, - view *view.View, - es v1.Eventstore, - command *command.Commands, - queries *query.Queries, - externalPort uint16, - externalSecure bool, - dir http.FileSystem, - assetsPrefix, - fileSystemPath string, - userEncryption crypto.EncryptionAlgorithm, - smtpEncryption crypto.EncryptionAlgorithm, - smsEncryption crypto.EncryptionAlgorithm, -) []queryv1.Handler { - return []queryv1.Handler{ - newNotifyUser( - handler{view, bulkLimit, configs.cycleDuration("User"), errorCount, es}, - queries, - ), - newNotification( - handler{view, bulkLimit, configs.cycleDuration("Notification"), errorCount, es}, - command, - queries, - externalPort, - externalSecure, - dir, - assetsPrefix, - fileSystemPath, - userEncryption, - smtpEncryption, - smsEncryption, - ), - } -} - -func (configs Configs) cycleDuration(viewModel string) time.Duration { - c, ok := configs[viewModel] - if !ok { - return 1 * time.Minute - } - return c.MinimumCycleDuration -} - -func (h *handler) MinimumCycleDuration() time.Duration { - return h.cycleDuration -} - -func (h *handler) LockDuration() time.Duration { - return h.cycleDuration / 3 -} - -func (h *handler) QueryLimit() uint64 { - return h.bulkLimit -} diff --git a/internal/notification/repository/eventsourcing/handler/notification.go b/internal/notification/repository/eventsourcing/handler/notification.go deleted file mode 100644 index df066d191ba..00000000000 --- a/internal/notification/repository/eventsourcing/handler/notification.go +++ /dev/null @@ -1,637 +0,0 @@ -package handler - -import ( - "context" - "encoding/json" - "net/http" - "time" - - "github.com/zitadel/logging" - - "github.com/zitadel/zitadel/internal/api/authz" - http_utils "github.com/zitadel/zitadel/internal/api/http" - "github.com/zitadel/zitadel/internal/command" - "github.com/zitadel/zitadel/internal/crypto" - "github.com/zitadel/zitadel/internal/domain" - "github.com/zitadel/zitadel/internal/errors" - "github.com/zitadel/zitadel/internal/eventstore" - v1 "github.com/zitadel/zitadel/internal/eventstore/v1" - "github.com/zitadel/zitadel/internal/eventstore/v1/models" - queryv1 "github.com/zitadel/zitadel/internal/eventstore/v1/query" - "github.com/zitadel/zitadel/internal/eventstore/v1/spooler" - "github.com/zitadel/zitadel/internal/i18n" - "github.com/zitadel/zitadel/internal/notification/channels/fs" - "github.com/zitadel/zitadel/internal/notification/channels/log" - "github.com/zitadel/zitadel/internal/notification/channels/smtp" - "github.com/zitadel/zitadel/internal/notification/channels/twilio" - "github.com/zitadel/zitadel/internal/notification/types" - "github.com/zitadel/zitadel/internal/query" - user_repo "github.com/zitadel/zitadel/internal/repository/user" - es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model" - "github.com/zitadel/zitadel/internal/user/repository/view" - "github.com/zitadel/zitadel/internal/user/repository/view/model" -) - -const ( - notificationTable = "notification.notifications" - NotifyUserID = "NOTIFICATION" -) - -type Notification struct { - handler - command *command.Commands - fileSystemPath string - statikDir http.FileSystem - subscription *v1.Subscription - assetsPrefix string - queries *query.Queries - userDataCrypto crypto.EncryptionAlgorithm - smtpPasswordCrypto crypto.EncryptionAlgorithm - smsTokenCrypto crypto.EncryptionAlgorithm - externalPort uint16 - externalSecure bool -} - -func newNotification( - handler handler, - command *command.Commands, - query *query.Queries, - externalPort uint16, - externalSecure bool, - statikDir http.FileSystem, - assetsPrefix, - fileSystemPath string, - userEncryption crypto.EncryptionAlgorithm, - smtpEncryption crypto.EncryptionAlgorithm, - smsEncryption crypto.EncryptionAlgorithm, -) *Notification { - h := &Notification{ - handler: handler, - command: command, - statikDir: statikDir, - assetsPrefix: assetsPrefix, - queries: query, - userDataCrypto: userEncryption, - smtpPasswordCrypto: smtpEncryption, - smsTokenCrypto: smsEncryption, - externalSecure: externalSecure, - externalPort: externalPort, - fileSystemPath: fileSystemPath, - } - - h.subscribe() - - return h -} - -func (k *Notification) subscribe() { - k.subscription = k.es.Subscribe(k.AggregateTypes()...) - go func() { - for event := range k.subscription.Events { - queryv1.ReduceEvent(k, event) - } - }() -} - -func (n *Notification) ViewModel() string { - return notificationTable -} - -func (n *Notification) Subscription() *v1.Subscription { - return n.subscription -} - -func (_ *Notification) AggregateTypes() []models.AggregateType { - return []models.AggregateType{user_repo.AggregateType} -} - -func (n *Notification) CurrentSequence(instanceID string) (uint64, error) { - sequence, err := n.view.GetLatestNotificationSequence(instanceID) - if err != nil { - return 0, err - } - return sequence.CurrentSequence, nil -} - -func (n *Notification) EventQuery() (*models.SearchQuery, error) { - sequences, err := n.view.GetLatestNotificationSequences() - if err != nil { - return nil, err - } - query := models.NewSearchQuery() - instances := make([]string, 0) - for _, sequence := range sequences { - for _, instance := range instances { - if sequence.InstanceID == instance { - break - } - } - instances = append(instances, sequence.InstanceID) - query.AddQuery(). - AggregateTypeFilter(n.AggregateTypes()...). - LatestSequenceFilter(sequence.CurrentSequence). - InstanceIDFilter(sequence.InstanceID) - } - return query.AddQuery(). - AggregateTypeFilter(n.AggregateTypes()...). - LatestSequenceFilter(0). - ExcludedInstanceIDsFilter(instances...). - SearchQuery(), nil -} - -func (n *Notification) Reduce(event *models.Event) (err error) { - switch eventstore.EventType(event.Type) { - case user_repo.UserV1InitialCodeAddedType, - user_repo.HumanInitialCodeAddedType: - err = n.handleInitUserCode(event) - case user_repo.UserV1EmailCodeAddedType, - user_repo.HumanEmailCodeAddedType: - err = n.handleEmailVerificationCode(event) - case user_repo.UserV1PhoneCodeAddedType, - user_repo.HumanPhoneCodeAddedType: - err = n.handlePhoneVerificationCode(event) - case user_repo.UserV1PasswordCodeAddedType, - user_repo.HumanPasswordCodeAddedType: - err = n.handlePasswordCode(event) - case user_repo.UserDomainClaimedType: - err = n.handleDomainClaimed(event) - case user_repo.HumanPasswordlessInitCodeRequestedType: - err = n.handlePasswordlessRegistrationLink(event) - } - if err != nil { - return err - } - return n.view.ProcessedNotificationSequence(event) -} - -func (n *Notification) handleInitUserCode(event *models.Event) (err error) { - initCode := new(es_model.InitUserCode) - if err := initCode.SetData(event); err != nil { - return err - } - ctx := getSetNotifyContextData(event.InstanceID, event.ResourceOwner) - alreadyHandled, err := n.checkIfCodeAlreadyHandledOrExpired(ctx, event, initCode.Expiry, - user_repo.UserV1InitialCodeAddedType, user_repo.UserV1InitialCodeSentType, - user_repo.HumanInitialCodeAddedType, user_repo.HumanInitialCodeSentType) - if err != nil || alreadyHandled { - return err - } - colors, err := n.getLabelPolicy(ctx) - if err != nil { - return err - } - - template, err := n.getMailTemplate(ctx) - if err != nil { - return err - } - - user, err := n.getUserByID(event.AggregateID, event.InstanceID) - if err != nil && !errors.IsNotFound(err) { - return err - } - - if user.Sequence < event.Sequence { - if err = n.verifyLatestUser(ctx, user); err != nil { - return err - } - } - - if user.Sequence == 0 { - return errors.ThrowNotFound(nil, "HANDL-JED2R", "no user events found") - } - - translator, err := n.getTranslatorWithOrgTexts(ctx, user.ResourceOwner, domain.InitCodeMessageType) - if err != nil { - return err - } - - origin, err := n.origin(ctx) - if err != nil { - return err - } - err = types.SendUserInitCode(ctx, string(template.Template), translator, user, initCode, n.getSMTPConfig, n.getFileSystemProvider, n.getLogProvider, n.userDataCrypto, colors, n.assetsPrefix, origin) - if err != nil { - return err - } - return n.command.HumanInitCodeSent(ctx, event.ResourceOwner, event.AggregateID) -} - -func (n *Notification) handlePasswordCode(event *models.Event) (err error) { - pwCode := new(es_model.PasswordCode) - if err := pwCode.SetData(event); err != nil { - return err - } - ctx := getSetNotifyContextData(event.InstanceID, event.ResourceOwner) - alreadyHandled, err := n.checkIfCodeAlreadyHandledOrExpired(ctx, event, pwCode.Expiry, - user_repo.UserV1PasswordCodeAddedType, user_repo.UserV1PasswordCodeSentType, - user_repo.HumanPasswordCodeAddedType, user_repo.HumanPasswordCodeSentType) - if err != nil || alreadyHandled { - return err - } - colors, err := n.getLabelPolicy(ctx) - if err != nil { - return err - } - - template, err := n.getMailTemplate(ctx) - if err != nil { - return err - } - - user, err := n.getUserByID(event.AggregateID, event.InstanceID) - if err != nil && !errors.IsNotFound(err) { - return err - } - - if user.Sequence < event.Sequence { - if err = n.verifyLatestUser(ctx, user); err != nil { - return err - } - } - - if user.Sequence == 0 { - return errors.ThrowNotFound(nil, "HANDL-JED2R", "no user events found") - } - - translator, err := n.getTranslatorWithOrgTexts(ctx, user.ResourceOwner, domain.PasswordResetMessageType) - if err != nil { - return err - } - - origin, err := n.origin(ctx) - if err != nil { - return err - } - err = types.SendPasswordCode(ctx, string(template.Template), translator, user, pwCode, n.getSMTPConfig, n.getTwilioConfig, n.getFileSystemProvider, n.getLogProvider, n.userDataCrypto, colors, n.assetsPrefix, origin) - if err != nil { - return err - } - return n.command.PasswordCodeSent(ctx, event.ResourceOwner, event.AggregateID) -} - -func (n *Notification) handleEmailVerificationCode(event *models.Event) (err error) { - emailCode := new(es_model.EmailCode) - if err := emailCode.SetData(event); err != nil { - return err - } - ctx := getSetNotifyContextData(event.InstanceID, event.ResourceOwner) - alreadyHandled, err := n.checkIfCodeAlreadyHandledOrExpired(ctx, event, emailCode.Expiry, - user_repo.UserV1EmailCodeAddedType, user_repo.UserV1EmailCodeSentType, - user_repo.HumanEmailCodeAddedType, user_repo.HumanEmailCodeSentType) - if err != nil || alreadyHandled { - return nil - } - colors, err := n.getLabelPolicy(ctx) - if err != nil { - return err - } - - template, err := n.getMailTemplate(ctx) - if err != nil { - return err - } - - user, err := n.getUserByID(event.AggregateID, event.InstanceID) - if err != nil && !errors.IsNotFound(err) { - return err - } - if user.Sequence < event.Sequence { - if err = n.verifyLatestUser(ctx, user); err != nil { - return err - } - } - - if user.Sequence == 0 { - return errors.ThrowNotFound(nil, "HANDL-JED2R", "no user events found") - } - - translator, err := n.getTranslatorWithOrgTexts(ctx, user.ResourceOwner, domain.VerifyEmailMessageType) - if err != nil { - return err - } - - origin, err := n.origin(ctx) - if err != nil { - return err - } - err = types.SendEmailVerificationCode(ctx, string(template.Template), translator, user, emailCode, n.getSMTPConfig, n.getFileSystemProvider, n.getLogProvider, n.userDataCrypto, colors, n.assetsPrefix, origin) - if err != nil { - return err - } - return n.command.HumanEmailVerificationCodeSent(ctx, event.ResourceOwner, event.AggregateID) -} - -func (n *Notification) handlePhoneVerificationCode(event *models.Event) (err error) { - phoneCode := new(es_model.PhoneCode) - if err := phoneCode.SetData(event); err != nil { - return err - } - ctx := getSetNotifyContextData(event.InstanceID, event.ResourceOwner) - alreadyHandled, err := n.checkIfCodeAlreadyHandledOrExpired(ctx, event, phoneCode.Expiry, - user_repo.UserV1PhoneCodeAddedType, user_repo.UserV1PhoneCodeSentType, - user_repo.HumanPhoneCodeAddedType, user_repo.HumanPhoneCodeSentType) - if err != nil || alreadyHandled { - return nil - } - user, err := n.getUserByID(event.AggregateID, event.InstanceID) - if err != nil && !errors.IsNotFound(err) { - return err - } - - if user.Sequence < event.Sequence { - if err = n.verifyLatestUser(ctx, user); err != nil { - return err - } - } - - if user.Sequence == 0 { - return errors.ThrowNotFound(nil, "HANDL-JED2R", "no user events found") - } - - translator, err := n.getTranslatorWithOrgTexts(ctx, user.ResourceOwner, domain.VerifyPhoneMessageType) - if err != nil { - return err - } - err = types.SendPhoneVerificationCode(ctx, translator, user, phoneCode, n.getTwilioConfig, n.getFileSystemProvider, n.getLogProvider, n.userDataCrypto) - if err != nil { - return err - } - return n.command.HumanPhoneVerificationCodeSent(ctx, event.ResourceOwner, event.AggregateID) -} - -func (n *Notification) handleDomainClaimed(event *models.Event) (err error) { - ctx := getSetNotifyContextData(event.InstanceID, event.ResourceOwner) - alreadyHandled, err := n.checkIfAlreadyHandled(ctx, event.AggregateID, event.InstanceID, event.Sequence, user_repo.UserDomainClaimedType, user_repo.UserDomainClaimedSentType) - if err != nil || alreadyHandled { - return nil - } - data := make(map[string]string) - if err := json.Unmarshal(event.Data, &data); err != nil { - logging.Log("HANDLE-Gghq2").WithError(err).Error("could not unmarshal event data") - return errors.ThrowInternal(err, "HANDLE-7hgj3", "could not unmarshal event") - } - user, err := n.getUserByID(event.AggregateID, event.InstanceID) - if err != nil { - return err - } - if user.LastEmail == "" { - return nil - } - colors, err := n.getLabelPolicy(ctx) - if err != nil { - return err - } - - template, err := n.getMailTemplate(ctx) - if err != nil { - return err - } - - translator, err := n.getTranslatorWithOrgTexts(ctx, user.ResourceOwner, domain.DomainClaimedMessageType) - if err != nil { - return err - } - - origin, err := n.origin(ctx) - if err != nil { - return err - } - err = types.SendDomainClaimed(ctx, string(template.Template), translator, user, data["userName"], n.getSMTPConfig, n.getFileSystemProvider, n.getLogProvider, colors, n.assetsPrefix, origin) - if err != nil { - return err - } - return n.command.UserDomainClaimedSent(ctx, event.ResourceOwner, event.AggregateID) -} - -func (n *Notification) handlePasswordlessRegistrationLink(event *models.Event) (err error) { - addedEvent := new(user_repo.HumanPasswordlessInitCodeRequestedEvent) - if err := json.Unmarshal(event.Data, addedEvent); err != nil { - return err - } - ctx := getSetNotifyContextData(event.InstanceID, event.ResourceOwner) - events, err := n.getUserEvents(ctx, event.AggregateID, event.InstanceID, event.Sequence) - if err != nil { - return err - } - for _, e := range events { - if eventstore.EventType(e.Type) == user_repo.HumanPasswordlessInitCodeSentType { - sentEvent := new(user_repo.HumanPasswordlessInitCodeSentEvent) - if err := json.Unmarshal(e.Data, sentEvent); err != nil { - return err - } - if sentEvent.ID == addedEvent.ID { - return nil - } - } - } - user, err := n.getUserByID(event.AggregateID, event.InstanceID) - if err != nil { - return err - } - colors, err := n.getLabelPolicy(ctx) - if err != nil { - return err - } - - template, err := n.getMailTemplate(ctx) - if err != nil { - return err - } - - translator, err := n.getTranslatorWithOrgTexts(ctx, user.ResourceOwner, domain.PasswordlessRegistrationMessageType) - if err != nil { - return err - } - - origin, err := n.origin(ctx) - if err != nil { - return err - } - err = types.SendPasswordlessRegistrationLink(ctx, string(template.Template), translator, user, addedEvent, n.getSMTPConfig, n.getFileSystemProvider, n.getLogProvider, n.userDataCrypto, colors, n.assetsPrefix, origin) - if err != nil { - return err - } - return n.command.HumanPasswordlessInitCodeSent(ctx, event.AggregateID, event.ResourceOwner, addedEvent.ID) -} - -func (n *Notification) checkIfCodeAlreadyHandledOrExpired(ctx context.Context, event *models.Event, expiry time.Duration, eventTypes ...eventstore.EventType) (bool, error) { - if event.CreationDate.Add(expiry).Before(time.Now().UTC()) { - return true, nil - } - return n.checkIfAlreadyHandled(ctx, event.AggregateID, event.InstanceID, event.Sequence, eventTypes...) -} - -func (n *Notification) checkIfAlreadyHandled(ctx context.Context, userID, instanceID string, sequence uint64, eventTypes ...eventstore.EventType) (bool, error) { - events, err := n.getUserEvents(ctx, userID, instanceID, sequence) - if err != nil { - return false, err - } - for _, event := range events { - for _, eventType := range eventTypes { - if eventstore.EventType(event.Type) == eventType { - return true, nil - } - } - } - return false, nil -} - -func (n *Notification) getUserEvents(ctx context.Context, userID, instanceID string, sequence uint64) ([]*models.Event, error) { - query, err := view.UserByIDQuery(userID, instanceID, sequence) - if err != nil { - return nil, err - } - - return n.es.FilterEvents(ctx, query) -} - -func (n *Notification) OnError(event *models.Event, err error) error { - logging.WithFields("id", event.AggregateID, "sequence", event.Sequence).WithError(err).Warn("something went wrong in notification handler") - return spooler.HandleError(event, err, n.view.GetLatestNotificationFailedEvent, n.view.ProcessedNotificationFailedEvent, n.view.ProcessedNotificationSequence, n.errorCountUntilSkip) -} - -func (n *Notification) OnSuccess() error { - return spooler.HandleSuccess(n.view.UpdateNotificationSpoolerRunTimestamp) -} - -func getSetNotifyContextData(instanceID, orgID string) context.Context { - ctx := authz.WithInstanceID(context.Background(), instanceID) - return authz.SetCtxData(ctx, authz.CtxData{UserID: NotifyUserID, OrgID: orgID}) -} - -// Read organization specific colors -func (n *Notification) getLabelPolicy(ctx context.Context) (*query.LabelPolicy, error) { - return n.queries.ActiveLabelPolicyByOrg(ctx, authz.GetCtxData(ctx).OrgID) -} - -// Read organization specific template -func (n *Notification) getMailTemplate(ctx context.Context) (*query.MailTemplate, error) { - return n.queries.MailTemplateByOrg(ctx, authz.GetCtxData(ctx).OrgID) -} - -// Read iam smtp config -func (n *Notification) getSMTPConfig(ctx context.Context) (*smtp.EmailConfig, error) { - config, err := n.queries.SMTPConfigByAggregateID(ctx, authz.GetInstance(ctx).InstanceID()) - if err != nil { - return nil, err - } - password, err := crypto.Decrypt(config.Password, n.smtpPasswordCrypto) - if err != nil { - return nil, err - } - return &smtp.EmailConfig{ - From: config.SenderAddress, - FromName: config.SenderName, - Tls: config.TLS, - SMTP: smtp.SMTP{ - Host: config.Host, - User: config.User, - Password: string(password), - }, - }, nil -} - -// Read iam twilio config -func (n *Notification) getTwilioConfig(ctx context.Context) (*twilio.TwilioConfig, error) { - active, err := query.NewSMSProviderStateQuery(domain.SMSConfigStateActive) - if err != nil { - return nil, err - } - config, err := n.queries.SMSProviderConfig(ctx, active) - if err != nil { - return nil, err - } - if config.TwilioConfig == nil { - return nil, errors.ThrowNotFound(nil, "HANDLER-8nfow", "Errors.SMS.Twilio.NotFound") - } - token, err := crypto.Decrypt(config.TwilioConfig.Token, n.smsTokenCrypto) - if err != nil { - return nil, err - } - return &twilio.TwilioConfig{ - SID: config.TwilioConfig.SID, - Token: string(token), - SenderNumber: config.TwilioConfig.SenderNumber, - }, nil -} - -// Read iam filesystem provider config -func (n *Notification) getFileSystemProvider(ctx context.Context) (*fs.FSConfig, error) { - config, err := n.queries.NotificationProviderByIDAndType(ctx, authz.GetInstance(ctx).InstanceID(), domain.NotificationProviderTypeFile) - if err != nil { - return nil, err - } - return &fs.FSConfig{ - Compact: config.Compact, - Path: n.fileSystemPath, - }, nil -} - -// Read iam log provider config -func (n *Notification) getLogProvider(ctx context.Context) (*log.LogConfig, error) { - config, err := n.queries.NotificationProviderByIDAndType(ctx, authz.GetInstance(ctx).InstanceID(), domain.NotificationProviderTypeLog) - if err != nil { - return nil, err - } - return &log.LogConfig{ - Compact: config.Compact, - }, nil -} - -func (n *Notification) getTranslatorWithOrgTexts(ctx context.Context, orgID, textType string) (*i18n.Translator, error) { - translator, err := i18n.NewTranslator(n.statikDir, n.queries.GetDefaultLanguage(ctx), "") - if err != nil { - return nil, err - } - - allCustomTexts, err := n.queries.CustomTextListByTemplate(ctx, authz.GetInstance(ctx).InstanceID(), textType) - if err != nil { - return translator, nil - } - customTexts, err := n.queries.CustomTextListByTemplate(ctx, orgID, textType) - if err != nil { - return translator, nil - } - allCustomTexts.CustomTexts = append(allCustomTexts.CustomTexts, customTexts.CustomTexts...) - - for _, text := range allCustomTexts.CustomTexts { - msg := i18n.Message{ - ID: text.Template + "." + text.Key, - Text: text.Text, - } - translator.AddMessages(text.Language, msg) - } - return translator, nil -} - -func (n *Notification) getUserByID(userID, instanceID string) (*model.NotifyUser, error) { - return n.view.NotifyUserByID(userID, instanceID) -} - -func (n *Notification) origin(ctx context.Context) (string, error) { - primary, err := query.NewInstanceDomainPrimarySearchQuery(true) - domains, err := n.queries.SearchInstanceDomains(ctx, &query.InstanceDomainSearchQueries{ - Queries: []query.SearchQuery{primary}, - }) - if err != nil { - return "", err - } - if len(domains.Domains) < 1 { - return "", errors.ThrowInternal(nil, "NOTIF-Ef3r1", "Errors.Notification.NoDomain") - } - return http_utils.BuildHTTP(domains.Domains[0].Domain, n.externalPort, n.externalSecure), nil -} - -func (n *Notification) verifyLatestUser(ctx context.Context, user *model.NotifyUser) error { - events, err := n.getUserEvents(ctx, user.ID, user.InstanceID, user.Sequence) - if err != nil { - return err - } - for _, event := range events { - if err = user.AppendEvent(event); err != nil { - return err - } - } - return nil -} diff --git a/internal/notification/repository/eventsourcing/handler/notify_user.go b/internal/notification/repository/eventsourcing/handler/notify_user.go deleted file mode 100644 index 9ea50811563..00000000000 --- a/internal/notification/repository/eventsourcing/handler/notify_user.go +++ /dev/null @@ -1,278 +0,0 @@ -package handler - -import ( - "context" - - "github.com/zitadel/logging" - - "github.com/zitadel/zitadel/internal/api/authz" - caos_errs "github.com/zitadel/zitadel/internal/errors" - "github.com/zitadel/zitadel/internal/eventstore" - v1 "github.com/zitadel/zitadel/internal/eventstore/v1" - es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models" - "github.com/zitadel/zitadel/internal/eventstore/v1/query" - es_sdk "github.com/zitadel/zitadel/internal/eventstore/v1/sdk" - "github.com/zitadel/zitadel/internal/eventstore/v1/spooler" - org_model "github.com/zitadel/zitadel/internal/org/model" - org_es_model "github.com/zitadel/zitadel/internal/org/repository/eventsourcing/model" - org_view "github.com/zitadel/zitadel/internal/org/repository/view" - query2 "github.com/zitadel/zitadel/internal/query" - "github.com/zitadel/zitadel/internal/repository/org" - "github.com/zitadel/zitadel/internal/repository/user" - view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" -) - -const ( - userTable = "notification.notify_users" -) - -type NotifyUser struct { - handler - subscription *v1.Subscription - queries *query2.Queries -} - -func newNotifyUser( - handler handler, - queries *query2.Queries, -) *NotifyUser { - h := &NotifyUser{ - handler: handler, - queries: queries, - } - - h.subscribe() - - return h -} - -func (k *NotifyUser) subscribe() { - k.subscription = k.es.Subscribe(k.AggregateTypes()...) - go func() { - for event := range k.subscription.Events { - query.ReduceEvent(k, event) - } - }() -} - -func (p *NotifyUser) ViewModel() string { - return userTable -} - -func (p *NotifyUser) Subscription() *v1.Subscription { - return p.subscription -} - -func (_ *NotifyUser) AggregateTypes() []es_models.AggregateType { - return []es_models.AggregateType{user.AggregateType, org.AggregateType} -} - -func (p *NotifyUser) CurrentSequence(instanceID string) (uint64, error) { - sequence, err := p.view.GetLatestNotifyUserSequence(instanceID) - if err != nil { - return 0, err - } - return sequence.CurrentSequence, nil -} - -func (p *NotifyUser) EventQuery() (*es_models.SearchQuery, error) { - sequences, err := p.view.GetLatestNotifyUserSequences() - if err != nil { - return nil, err - } - query := es_models.NewSearchQuery() - instances := make([]string, 0) - for _, sequence := range sequences { - for _, instance := range instances { - if sequence.InstanceID == instance { - break - } - } - instances = append(instances, sequence.InstanceID) - query.AddQuery(). - AggregateTypeFilter(p.AggregateTypes()...). - LatestSequenceFilter(sequence.CurrentSequence). - InstanceIDFilter(sequence.InstanceID) - } - return query.AddQuery(). - AggregateTypeFilter(p.AggregateTypes()...). - LatestSequenceFilter(0). - ExcludedInstanceIDsFilter(instances...). - SearchQuery(), nil -} - -func (u *NotifyUser) Reduce(event *es_models.Event) (err error) { - switch event.AggregateType { - case user.AggregateType: - return u.ProcessUser(event) - case org.AggregateType: - return u.ProcessOrg(event) - default: - return nil - } -} - -func (u *NotifyUser) ProcessUser(event *es_models.Event) (err error) { - notifyUser := new(view_model.NotifyUser) - switch eventstore.EventType(event.Type) { - case user.UserV1AddedType, - user.UserV1RegisteredType, - user.HumanRegisteredType, - user.HumanAddedType, - user.MachineAddedEventType: - err = notifyUser.AppendEvent(event) - if err != nil { - return err - } - err = u.fillLoginNames(notifyUser) - case user.UserV1ProfileChangedType, - user.UserV1EmailChangedType, - user.UserV1EmailVerifiedType, - user.UserV1PhoneChangedType, - user.UserV1PhoneVerifiedType, - user.UserV1PhoneRemovedType, - user.HumanProfileChangedType, - user.HumanEmailChangedType, - user.HumanEmailVerifiedType, - user.HumanPhoneChangedType, - user.HumanPhoneVerifiedType, - user.HumanPhoneRemovedType, - user.MachineChangedEventType: - notifyUser, err = u.view.NotifyUserByID(event.AggregateID, event.InstanceID) - if err != nil { - return err - } - err = notifyUser.AppendEvent(event) - case user.UserDomainClaimedType, - user.UserUserNameChangedType: - notifyUser, err = u.view.NotifyUserByID(event.AggregateID, event.InstanceID) - if err != nil { - return err - } - err = notifyUser.AppendEvent(event) - if err != nil { - return err - } - err = u.fillLoginNames(notifyUser) - case user.UserRemovedType: - return u.view.DeleteNotifyUser(event.AggregateID, event.InstanceID, event) - default: - return u.view.ProcessedNotifyUserSequence(event) - } - if err != nil { - return err - } - return u.view.PutNotifyUser(notifyUser, event) -} - -func (u *NotifyUser) ProcessOrg(event *es_models.Event) (err error) { - switch eventstore.EventType(event.Type) { - case org.OrgDomainVerifiedEventType, - org.OrgDomainRemovedEventType, - org.DomainPolicyAddedEventType, - org.DomainPolicyChangedEventType, - org.DomainPolicyRemovedEventType: - return u.fillLoginNamesOnOrgUsers(event) - case org.OrgDomainPrimarySetEventType: - return u.fillPreferredLoginNamesOnOrgUsers(event) - default: - return u.view.ProcessedNotifyUserSequence(event) - } -} - -func (u *NotifyUser) fillLoginNamesOnOrgUsers(event *es_models.Event) error { - userLoginMustBeDomain, _, domains, err := u.loginNameInformation(context.Background(), event.ResourceOwner, event.InstanceID) - if err != nil { - return err - } - users, err := u.view.NotifyUsersByOrgID(event.AggregateID, event.InstanceID) - if err != nil { - return err - } - for _, user := range users { - user.SetLoginNames(userLoginMustBeDomain, domains) - err := u.view.PutNotifyUser(user, event) - if err != nil { - return err - } - } - return u.view.ProcessedNotifyUserSequence(event) -} - -func (u *NotifyUser) fillPreferredLoginNamesOnOrgUsers(event *es_models.Event) error { - userLoginMustBeDomain, primaryDomain, _, err := u.loginNameInformation(context.Background(), event.ResourceOwner, event.InstanceID) - if err != nil { - return err - } - if !userLoginMustBeDomain { - return nil - } - users, err := u.view.NotifyUsersByOrgID(event.AggregateID, event.InstanceID) - if err != nil { - return err - } - for _, user := range users { - user.PreferredLoginName = user.GenerateLoginName(primaryDomain, userLoginMustBeDomain) - err := u.view.PutNotifyUser(user, event) - if err != nil { - return err - } - } - return nil -} - -func (u *NotifyUser) fillLoginNames(user *view_model.NotifyUser) (err error) { - userLoginMustBeDomain, primaryDomain, domains, err := u.loginNameInformation(context.Background(), user.ResourceOwner, user.InstanceID) - if err != nil { - return err - } - user.SetLoginNames(userLoginMustBeDomain, domains) - user.PreferredLoginName = user.GenerateLoginName(primaryDomain, userLoginMustBeDomain) - return nil -} - -func (p *NotifyUser) OnError(event *es_models.Event, err error) error { - logging.LogWithFields("SPOOL-9spwf", "id", event.AggregateID).WithError(err).Warn("something went wrong in notify user handler") - return spooler.HandleError(event, err, p.view.GetLatestNotifyUserFailedEvent, p.view.ProcessedNotifyUserFailedEvent, p.view.ProcessedNotifyUserSequence, p.errorCountUntilSkip) -} - -func (u *NotifyUser) OnSuccess() error { - return spooler.HandleSuccess(u.view.UpdateNotifyUserSpoolerRunTimestamp) -} - -func (u *NotifyUser) getOrgByID(ctx context.Context, orgID, instanceID string) (*org_model.Org, error) { - query, err := org_view.OrgByIDQuery(orgID, instanceID, 0) - if err != nil { - return nil, err - } - - esOrg := &org_es_model.Org{ - ObjectRoot: es_models.ObjectRoot{ - AggregateID: orgID, - }, - } - err = es_sdk.Filter(ctx, u.Eventstore().FilterEvents, esOrg.AppendEvents, query) - if err != nil && !caos_errs.IsNotFound(err) { - return nil, err - } - if esOrg.Sequence == 0 { - return nil, caos_errs.ThrowNotFound(nil, "EVENT-kVLb2", "Errors.Org.NotFound") - } - - return org_es_model.OrgToModel(esOrg), nil -} - -func (u *NotifyUser) loginNameInformation(ctx context.Context, orgID, instanceID string) (userLoginMustBeDomain bool, primaryDomain string, domains []*org_model.OrgDomain, err error) { - org, err := u.getOrgByID(ctx, orgID, instanceID) - if err != nil { - return false, "", nil, err - } - if org.DomainPolicy == nil { - policy, err := u.queries.DefaultDomainPolicy(authz.WithInstanceID(ctx, org.InstanceID)) - if err != nil { - return false, "", nil, err - } - userLoginMustBeDomain = policy.UserLoginMustBeDomain - } - return userLoginMustBeDomain, org.GetPrimaryDomain().Domain, org.Domains, nil -} diff --git a/internal/notification/repository/eventsourcing/repository.go b/internal/notification/repository/eventsourcing/repository.go deleted file mode 100644 index 9bb6065ae1a..00000000000 --- a/internal/notification/repository/eventsourcing/repository.go +++ /dev/null @@ -1,56 +0,0 @@ -package eventsourcing - -import ( - "database/sql" - "net/http" - - "github.com/zitadel/zitadel/internal/command" - "github.com/zitadel/zitadel/internal/crypto" - v1 "github.com/zitadel/zitadel/internal/eventstore/v1" - es_spol "github.com/zitadel/zitadel/internal/eventstore/v1/spooler" - "github.com/zitadel/zitadel/internal/notification/repository/eventsourcing/spooler" - noti_view "github.com/zitadel/zitadel/internal/notification/repository/eventsourcing/view" - "github.com/zitadel/zitadel/internal/query" -) - -type Config struct { - Spooler spooler.SpoolerConfig -} - -type EsRepository struct { - spooler *es_spol.Spooler -} - -func Start(conf Config, - dir http.FileSystem, - externalPort uint16, - externalSecure bool, - command *command.Commands, - queries *query.Queries, - dbClient *sql.DB, - assetsPrefix, - fileSystemPath string, - userEncryption crypto.EncryptionAlgorithm, - smtpEncryption crypto.EncryptionAlgorithm, - smsEncryption crypto.EncryptionAlgorithm, -) (*EsRepository, error) { - es, err := v1.Start(dbClient) - if err != nil { - return nil, err - } - - view, err := noti_view.StartView(dbClient) - if err != nil { - return nil, err - } - - spool := spooler.StartSpooler(conf.Spooler, es, view, dbClient, command, queries, externalPort, externalSecure, dir, assetsPrefix, fileSystemPath, userEncryption, smtpEncryption, smsEncryption) - - return &EsRepository{ - spool, - }, nil -} - -func (repo *EsRepository) Health() error { - return nil -} diff --git a/internal/notification/repository/eventsourcing/spooler/lock.go b/internal/notification/repository/eventsourcing/spooler/lock.go deleted file mode 100644 index d773a3c3995..00000000000 --- a/internal/notification/repository/eventsourcing/spooler/lock.go +++ /dev/null @@ -1,20 +0,0 @@ -package spooler - -import ( - "database/sql" - "time" - - es_locker "github.com/zitadel/zitadel/internal/eventstore/v1/locker" -) - -const ( - lockTable = "notification.locks" -) - -type locker struct { - dbClient *sql.DB -} - -func (l *locker) Renew(lockerID, viewModel, instanceID string, waitTime time.Duration) error { - return es_locker.Renew(l.dbClient, lockTable, lockerID, viewModel, instanceID, waitTime) -} diff --git a/internal/notification/repository/eventsourcing/spooler/spooler.go b/internal/notification/repository/eventsourcing/spooler/spooler.go deleted file mode 100644 index 685dbe5c44a..00000000000 --- a/internal/notification/repository/eventsourcing/spooler/spooler.go +++ /dev/null @@ -1,47 +0,0 @@ -package spooler - -import ( - "database/sql" - "net/http" - - "github.com/zitadel/zitadel/internal/command" - "github.com/zitadel/zitadel/internal/crypto" - v1 "github.com/zitadel/zitadel/internal/eventstore/v1" - "github.com/zitadel/zitadel/internal/eventstore/v1/spooler" - "github.com/zitadel/zitadel/internal/notification/repository/eventsourcing/handler" - "github.com/zitadel/zitadel/internal/notification/repository/eventsourcing/view" - "github.com/zitadel/zitadel/internal/query" -) - -type SpoolerConfig struct { - BulkLimit uint64 - FailureCountUntilSkip uint64 - ConcurrentWorkers int - Handlers handler.Configs -} - -func StartSpooler(c SpoolerConfig, - es v1.Eventstore, - view *view.View, - sql *sql.DB, - command *command.Commands, - queries *query.Queries, - externalPort uint16, - externalSecure bool, - dir http.FileSystem, - assetsPrefix, - fileSystemPath string, - userEncryption crypto.EncryptionAlgorithm, - smtpEncryption crypto.EncryptionAlgorithm, - smsEncryption crypto.EncryptionAlgorithm, -) *spooler.Spooler { - spoolerConfig := spooler.Config{ - Eventstore: es, - Locker: &locker{dbClient: sql}, - ConcurrentWorkers: c.ConcurrentWorkers, - ViewHandlers: handler.Register(c.Handlers, c.BulkLimit, c.FailureCountUntilSkip, view, es, command, queries, externalPort, externalSecure, dir, assetsPrefix, fileSystemPath, userEncryption, smtpEncryption, smsEncryption), - } - spool := spoolerConfig.New() - spool.Start() - return spool -} diff --git a/internal/notification/repository/eventsourcing/view/error_event.go b/internal/notification/repository/eventsourcing/view/error_event.go deleted file mode 100644 index 73ad6678d8b..00000000000 --- a/internal/notification/repository/eventsourcing/view/error_event.go +++ /dev/null @@ -1,17 +0,0 @@ -package view - -import ( - "github.com/zitadel/zitadel/internal/view/repository" -) - -const ( - errTable = "notification.failed_events" -) - -func (v *View) saveFailedEvent(failedEvent *repository.FailedEvent) error { - return repository.SaveFailedEvent(v.Db, errTable, failedEvent) -} - -func (v *View) latestFailedEvent(viewName, instanceID string, sequence uint64) (*repository.FailedEvent, error) { - return repository.LatestFailedEvent(v.Db, errTable, viewName, instanceID, sequence) -} diff --git a/internal/notification/repository/eventsourcing/view/notification.go b/internal/notification/repository/eventsourcing/view/notification.go deleted file mode 100644 index c0810c6b431..00000000000 --- a/internal/notification/repository/eventsourcing/view/notification.go +++ /dev/null @@ -1,34 +0,0 @@ -package view - -import ( - "github.com/zitadel/zitadel/internal/eventstore/v1/models" - "github.com/zitadel/zitadel/internal/view/repository" -) - -const ( - notificationTable = "notification.notifications" -) - -func (v *View) GetLatestNotificationSequence(instanceID string) (*repository.CurrentSequence, error) { - return v.latestSequence(notificationTable, instanceID) -} - -func (v *View) GetLatestNotificationSequences() ([]*repository.CurrentSequence, error) { - return v.latestSequences(notificationTable) -} - -func (v *View) ProcessedNotificationSequence(event *models.Event) error { - return v.saveCurrentSequence(notificationTable, event) -} - -func (v *View) UpdateNotificationSpoolerRunTimestamp() error { - return v.updateSpoolerRunSequence(notificationTable) -} - -func (v *View) GetLatestNotificationFailedEvent(sequence uint64, instanceID string) (*repository.FailedEvent, error) { - return v.latestFailedEvent(notificationTable, instanceID, sequence) -} - -func (v *View) ProcessedNotificationFailedEvent(failedEvent *repository.FailedEvent) error { - return v.saveFailedEvent(failedEvent) -} diff --git a/internal/notification/repository/eventsourcing/view/notify_user.go b/internal/notification/repository/eventsourcing/view/notify_user.go deleted file mode 100644 index d5639264f1b..00000000000 --- a/internal/notification/repository/eventsourcing/view/notify_user.go +++ /dev/null @@ -1,61 +0,0 @@ -package view - -import ( - "github.com/zitadel/zitadel/internal/errors" - "github.com/zitadel/zitadel/internal/eventstore/v1/models" - "github.com/zitadel/zitadel/internal/user/repository/view" - "github.com/zitadel/zitadel/internal/user/repository/view/model" - "github.com/zitadel/zitadel/internal/view/repository" -) - -const ( - notifyUserTable = "notification.notify_users" -) - -func (v *View) NotifyUserByID(userID, instanceID string) (*model.NotifyUser, error) { - return view.NotifyUserByID(v.Db, notifyUserTable, userID, instanceID) -} - -func (v *View) PutNotifyUser(user *model.NotifyUser, event *models.Event) error { - err := view.PutNotifyUser(v.Db, notifyUserTable, user) - if err != nil { - return err - } - return v.ProcessedNotifyUserSequence(event) -} - -func (v *View) NotifyUsersByOrgID(orgID, instanceID string) ([]*model.NotifyUser, error) { - return view.NotifyUsersByOrgID(v.Db, notifyUserTable, orgID, instanceID) -} - -func (v *View) DeleteNotifyUser(userID, instanceID string, event *models.Event) error { - err := view.DeleteNotifyUser(v.Db, notifyUserTable, userID, instanceID) - if err != nil && !errors.IsNotFound(err) { - return err - } - return v.ProcessedNotifyUserSequence(event) -} - -func (v *View) GetLatestNotifyUserSequence(instanceID string) (*repository.CurrentSequence, error) { - return v.latestSequence(notifyUserTable, instanceID) -} - -func (v *View) GetLatestNotifyUserSequences() ([]*repository.CurrentSequence, error) { - return v.latestSequences(notifyUserTable) -} - -func (v *View) ProcessedNotifyUserSequence(event *models.Event) error { - return v.saveCurrentSequence(notifyUserTable, event) -} - -func (v *View) UpdateNotifyUserSpoolerRunTimestamp() error { - return v.updateSpoolerRunSequence(notifyUserTable) -} - -func (v *View) GetLatestNotifyUserFailedEvent(sequence uint64, instanceID string) (*repository.FailedEvent, error) { - return v.latestFailedEvent(notifyUserTable, instanceID, sequence) -} - -func (v *View) ProcessedNotifyUserFailedEvent(failedEvent *repository.FailedEvent) error { - return v.saveFailedEvent(failedEvent) -} diff --git a/internal/notification/repository/eventsourcing/view/sequence.go b/internal/notification/repository/eventsourcing/view/sequence.go deleted file mode 100644 index 8c7307ef72b..00000000000 --- a/internal/notification/repository/eventsourcing/view/sequence.go +++ /dev/null @@ -1,38 +0,0 @@ -package view - -import ( - "time" - - "github.com/zitadel/zitadel/internal/eventstore/v1/models" - "github.com/zitadel/zitadel/internal/view/repository" -) - -const ( - sequencesTable = "notification.current_sequences" -) - -func (v *View) saveCurrentSequence(viewName string, event *models.Event) error { - return repository.SaveCurrentSequence(v.Db, sequencesTable, viewName, event.InstanceID, event.Sequence, event.CreationDate) -} - -func (v *View) latestSequence(viewName, instanceID string) (*repository.CurrentSequence, error) { - return repository.LatestSequence(v.Db, sequencesTable, viewName, instanceID) -} - -func (v *View) latestSequences(viewName string) ([]*repository.CurrentSequence, error) { - return repository.LatestSequences(v.Db, sequencesTable, viewName) -} - -func (v *View) updateSpoolerRunSequence(viewName string) error { - currentSequences, err := repository.LatestSequences(v.Db, sequencesTable, viewName) - if err != nil { - return err - } - for _, currentSequence := range currentSequences { - if currentSequence.ViewName == "" { - currentSequence.ViewName = viewName - } - currentSequence.LastSuccessfulSpoolerRun = time.Now() - } - return repository.UpdateCurrentSequences(v.Db, sequencesTable, currentSequences) -} diff --git a/internal/notification/repository/eventsourcing/view/view.go b/internal/notification/repository/eventsourcing/view/view.go deleted file mode 100644 index 4b8c52392dd..00000000000 --- a/internal/notification/repository/eventsourcing/view/view.go +++ /dev/null @@ -1,25 +0,0 @@ -package view - -import ( - "database/sql" - - "github.com/jinzhu/gorm" -) - -type View struct { - Db *gorm.DB -} - -func StartView(sqlClient *sql.DB) (*View, error) { - gorm, err := gorm.Open("postgres", sqlClient) - if err != nil { - return nil, err - } - return &View{ - Db: gorm, - }, nil -} - -func (v *View) Health() (err error) { - return v.Db.DB().Ping() -} diff --git a/internal/notification/repository/repository.go b/internal/notification/repository/repository.go deleted file mode 100644 index f99114e05f8..00000000000 --- a/internal/notification/repository/repository.go +++ /dev/null @@ -1,5 +0,0 @@ -package repository - -type Repository interface { - Health() error -} diff --git a/internal/notification/templates/templateData.go b/internal/notification/templates/templateData.go index 75b44339230..29a74f3328a 100644 --- a/internal/notification/templates/templateData.go +++ b/internal/notification/templates/templateData.go @@ -21,7 +21,7 @@ type TemplateData struct { Subject string Greeting string Text string - Href string + URL string ButtonText string PrimaryColor string BackgroundColor string diff --git a/internal/notification/types/domain_claimed.go b/internal/notification/types/domain_claimed.go index 4ebad6708ce..cc6159454bf 100644 --- a/internal/notification/types/domain_claimed.go +++ b/internal/notification/types/domain_claimed.go @@ -1,38 +1,17 @@ package types import ( - "context" "strings" "github.com/zitadel/zitadel/internal/api/ui/login" "github.com/zitadel/zitadel/internal/domain" - "github.com/zitadel/zitadel/internal/i18n" - "github.com/zitadel/zitadel/internal/notification/channels/fs" - "github.com/zitadel/zitadel/internal/notification/channels/log" - "github.com/zitadel/zitadel/internal/notification/channels/smtp" - "github.com/zitadel/zitadel/internal/notification/templates" "github.com/zitadel/zitadel/internal/query" - view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" ) -type DomainClaimedData struct { - templates.TemplateData - URL string -} - -func SendDomainClaimed(ctx context.Context, mailhtml string, translator *i18n.Translator, user *view_model.NotifyUser, username string, emailConfig func(ctx context.Context) (*smtp.EmailConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), colors *query.LabelPolicy, assetsPrefix string, origin string) error { +func (notify Notify) SendDomainClaimed(user *query.NotifyUser, origin, username string) error { url := login.LoginLink(origin, user.ResourceOwner) - var args = mapNotifyUserToArgs(user) + args := make(map[string]interface{}) args["TempUsername"] = username args["Domain"] = strings.Split(user.LastEmail, "@")[1] - - domainClaimedData := &DomainClaimedData{ - TemplateData: GetTemplateData(translator, args, assetsPrefix, url, domain.DomainClaimedMessageType, user.PreferredLanguage, colors), - URL: url, - } - template, err := templates.GetParsedTemplate(mailhtml, domainClaimedData) - if err != nil { - return err - } - return generateEmail(ctx, user, domainClaimedData.Subject, template, emailConfig, getFileSystemProvider, getLogProvider, true) + return notify(url, args, domain.DomainClaimedMessageType, true) } diff --git a/internal/notification/types/email_verification_code.go b/internal/notification/types/email_verification_code.go index 9170e41b786..5f4ab071fb9 100644 --- a/internal/notification/types/email_verification_code.go +++ b/internal/notification/types/email_verification_code.go @@ -1,43 +1,14 @@ package types import ( - "context" - "github.com/zitadel/zitadel/internal/api/ui/login" - "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/domain" - "github.com/zitadel/zitadel/internal/i18n" - "github.com/zitadel/zitadel/internal/notification/channels/fs" - "github.com/zitadel/zitadel/internal/notification/channels/log" - "github.com/zitadel/zitadel/internal/notification/channels/smtp" - "github.com/zitadel/zitadel/internal/notification/templates" "github.com/zitadel/zitadel/internal/query" - es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model" - view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" ) -type EmailVerificationCodeData struct { - templates.TemplateData - URL string -} - -func SendEmailVerificationCode(ctx context.Context, mailhtml string, translator *i18n.Translator, user *view_model.NotifyUser, code *es_model.EmailCode, smtpConfig func(ctx context.Context) (*smtp.EmailConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), alg crypto.EncryptionAlgorithm, colors *query.LabelPolicy, assetsPrefix string, origin string) error { - codeString, err := crypto.DecryptString(code.Code, alg) - if err != nil { - return err - } - url := login.MailVerificationLink(origin, user.ID, codeString, user.ResourceOwner) - var args = mapNotifyUserToArgs(user) - args["Code"] = codeString - - emailCodeData := &EmailVerificationCodeData{ - TemplateData: GetTemplateData(translator, args, assetsPrefix, url, domain.VerifyEmailMessageType, user.PreferredLanguage, colors), - URL: url, - } - - template, err := templates.GetParsedTemplate(mailhtml, emailCodeData) - if err != nil { - return err - } - return generateEmail(ctx, user, emailCodeData.Subject, template, smtpConfig, getFileSystemProvider, getLogProvider, true) +func (notify Notify) SendEmailVerificationCode(user *query.NotifyUser, origin, code string) error { + url := login.MailVerificationLink(origin, user.ID, code, user.ResourceOwner) + args := make(map[string]interface{}) + args["Code"] = code + return notify(url, args, domain.VerifyEmailMessageType, true) } diff --git a/internal/notification/types/init_code.go b/internal/notification/types/init_code.go index e4b6095e284..01399ef29dd 100644 --- a/internal/notification/types/init_code.go +++ b/internal/notification/types/init_code.go @@ -1,49 +1,14 @@ package types import ( - "context" - "github.com/zitadel/zitadel/internal/api/ui/login" - "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/domain" - "github.com/zitadel/zitadel/internal/i18n" - "github.com/zitadel/zitadel/internal/notification/channels/fs" - "github.com/zitadel/zitadel/internal/notification/channels/log" - "github.com/zitadel/zitadel/internal/notification/channels/smtp" - "github.com/zitadel/zitadel/internal/notification/templates" "github.com/zitadel/zitadel/internal/query" - es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model" - view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" ) -type InitCodeEmailData struct { - templates.TemplateData - URL string -} - -type UrlData struct { - UserID string - Code string - PasswordSet bool - OrgID string -} - -func SendUserInitCode(ctx context.Context, mailhtml string, translator *i18n.Translator, user *view_model.NotifyUser, code *es_model.InitUserCode, smtpConfig func(ctx context.Context) (*smtp.EmailConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), alg crypto.EncryptionAlgorithm, colors *query.LabelPolicy, assetsPrefix, origin string) error { - codeString, err := crypto.DecryptString(code.Code, alg) - if err != nil { - return err - } - url := login.InitUserLink(origin, user.ID, codeString, user.ResourceOwner, user.PasswordSet) - var args = mapNotifyUserToArgs(user) - args["Code"] = codeString - - initCodeData := &InitCodeEmailData{ - TemplateData: GetTemplateData(translator, args, assetsPrefix, url, domain.InitCodeMessageType, user.PreferredLanguage, colors), - URL: url, - } - template, err := templates.GetParsedTemplate(mailhtml, initCodeData) - if err != nil { - return err - } - return generateEmail(ctx, user, initCodeData.Subject, template, smtpConfig, getFileSystemProvider, getLogProvider, true) +func (notify Notify) SendUserInitCode(user *query.NotifyUser, origin, code string) error { + url := login.InitUserLink(origin, user.ID, code, user.ResourceOwner, user.PasswordSet) + args := make(map[string]interface{}) + args["Code"] = code + return notify(url, args, domain.InitCodeMessageType, true) } diff --git a/internal/notification/types/notification.go b/internal/notification/types/notification.go new file mode 100644 index 00000000000..117e272add4 --- /dev/null +++ b/internal/notification/types/notification.go @@ -0,0 +1,73 @@ +package types + +import ( + "context" + + "github.com/zitadel/zitadel/internal/i18n" + "github.com/zitadel/zitadel/internal/notification/channels/fs" + "github.com/zitadel/zitadel/internal/notification/channels/log" + "github.com/zitadel/zitadel/internal/notification/channels/smtp" + "github.com/zitadel/zitadel/internal/notification/channels/twilio" + "github.com/zitadel/zitadel/internal/notification/templates" + "github.com/zitadel/zitadel/internal/query" +) + +type Notify func( + url string, + args map[string]interface{}, + messageType string, + allowUnverifiedNotificationChannel bool, +) error + +func SendEmail( + ctx context.Context, + mailhtml string, + translator *i18n.Translator, + user *query.NotifyUser, + emailConfig func(ctx context.Context) (*smtp.EmailConfig, error), + getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), + getLogProvider func(ctx context.Context) (*log.LogConfig, error), + colors *query.LabelPolicy, + assetsPrefix string, +) Notify { + return func( + url string, + args map[string]interface{}, + messageType string, + allowUnverifiedNotificationChannel bool, + ) error { + args = mapNotifyUserToArgs(user, args) + data := GetTemplateData(translator, args, assetsPrefix, url, messageType, user.PreferredLanguage.String(), colors) + template, err := templates.GetParsedTemplate(mailhtml, data) + if err != nil { + return err + } + return generateEmail(ctx, user, data.Subject, template, emailConfig, getFileSystemProvider, getLogProvider, allowUnverifiedNotificationChannel) + } +} + +func SendSMSTwilio( + ctx context.Context, + translator *i18n.Translator, + user *query.NotifyUser, + twilioConfig func(ctx context.Context) (*twilio.TwilioConfig, error), + getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), + getLogProvider func(ctx context.Context) (*log.LogConfig, error), + colors *query.LabelPolicy, + assetsPrefix string, +) Notify { + return func( + url string, + args map[string]interface{}, + messageType string, + allowUnverifiedNotificationChannel bool, + ) error { + args = mapNotifyUserToArgs(user, args) + data := GetTemplateData(translator, args, assetsPrefix, url, messageType, user.PreferredLanguage.String(), colors) + return generateSms(ctx, user, data.Text, twilioConfig, getFileSystemProvider, getLogProvider, allowUnverifiedNotificationChannel) + } +} + +func externalLink(origin string) string { + return origin + "/ui/login" +} diff --git a/internal/notification/types/password_code.go b/internal/notification/types/password_code.go index 9baa41123f7..e9b5df529f2 100644 --- a/internal/notification/types/password_code.go +++ b/internal/notification/types/password_code.go @@ -1,51 +1,14 @@ package types import ( - "context" - "github.com/zitadel/zitadel/internal/api/ui/login" - "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/domain" - "github.com/zitadel/zitadel/internal/i18n" - "github.com/zitadel/zitadel/internal/notification/channels/fs" - "github.com/zitadel/zitadel/internal/notification/channels/log" - "github.com/zitadel/zitadel/internal/notification/channels/smtp" - "github.com/zitadel/zitadel/internal/notification/channels/twilio" - "github.com/zitadel/zitadel/internal/notification/templates" "github.com/zitadel/zitadel/internal/query" - es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model" - view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" ) -type PasswordCodeData struct { - templates.TemplateData - FirstName string - LastName string - URL string -} - -func SendPasswordCode(ctx context.Context, mailhtml string, translator *i18n.Translator, user *view_model.NotifyUser, code *es_model.PasswordCode, smtpConfig func(ctx context.Context) (*smtp.EmailConfig, error), getTwilioConfig func(ctx context.Context) (*twilio.TwilioConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), alg crypto.EncryptionAlgorithm, colors *query.LabelPolicy, assetsPrefix string, origin string) error { - codeString, err := crypto.DecryptString(code.Code, alg) - if err != nil { - return err - } - url := login.InitPasswordLink(origin, user.ID, codeString, user.ResourceOwner) - var args = mapNotifyUserToArgs(user) - args["Code"] = codeString - - passwordResetData := &PasswordCodeData{ - TemplateData: GetTemplateData(translator, args, assetsPrefix, url, domain.PasswordResetMessageType, user.PreferredLanguage, colors), - FirstName: user.FirstName, - LastName: user.LastName, - URL: url, - } - template, err := templates.GetParsedTemplate(mailhtml, passwordResetData) - if err != nil { - return err - } - if code.NotificationType == int32(domain.NotificationTypeSms) { - return generateSms(ctx, user, passwordResetData.Text, getTwilioConfig, getFileSystemProvider, getLogProvider, false) - } - return generateEmail(ctx, user, passwordResetData.Subject, template, smtpConfig, getFileSystemProvider, getLogProvider, true) - +func (notify Notify) SendPasswordCode(user *query.NotifyUser, origin, code string) error { + url := login.InitPasswordLink(origin, user.ID, code, user.ResourceOwner) + args := make(map[string]interface{}) + args["Code"] = code + return notify(url, args, domain.PasswordResetMessageType, true) } diff --git a/internal/notification/types/passwordless_registration_link.go b/internal/notification/types/passwordless_registration_link.go index 88c2381eaf5..8c6f6894ba1 100644 --- a/internal/notification/types/passwordless_registration_link.go +++ b/internal/notification/types/passwordless_registration_link.go @@ -1,42 +1,12 @@ package types import ( - "context" - "github.com/zitadel/zitadel/internal/api/ui/login" - "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/domain" - "github.com/zitadel/zitadel/internal/i18n" - "github.com/zitadel/zitadel/internal/notification/channels/fs" - "github.com/zitadel/zitadel/internal/notification/channels/log" - "github.com/zitadel/zitadel/internal/notification/channels/smtp" - "github.com/zitadel/zitadel/internal/notification/templates" "github.com/zitadel/zitadel/internal/query" - "github.com/zitadel/zitadel/internal/repository/user" - view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" ) -type PasswordlessRegistrationLinkData struct { - templates.TemplateData - URL string -} - -func SendPasswordlessRegistrationLink(ctx context.Context, mailhtml string, translator *i18n.Translator, user *view_model.NotifyUser, code *user.HumanPasswordlessInitCodeRequestedEvent, smtpConfig func(ctx context.Context) (*smtp.EmailConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), alg crypto.EncryptionAlgorithm, colors *query.LabelPolicy, assetsPrefix string, origin string) error { - codeString, err := crypto.DecryptString(code.Code, alg) - if err != nil { - return err - } - url := domain.PasswordlessInitCodeLink(origin+login.HandlerPrefix+login.EndpointPasswordlessRegistration, user.ID, user.ResourceOwner, code.ID, codeString) - var args = mapNotifyUserToArgs(user) - - emailCodeData := &PasswordlessRegistrationLinkData{ - TemplateData: GetTemplateData(translator, args, assetsPrefix, url, domain.PasswordlessRegistrationMessageType, user.PreferredLanguage, colors), - URL: url, - } - - template, err := templates.GetParsedTemplate(mailhtml, emailCodeData) - if err != nil { - return err - } - return generateEmail(ctx, user, emailCodeData.Subject, template, smtpConfig, getFileSystemProvider, getLogProvider, true) +func (notify Notify) SendPasswordlessRegistrationLink(user *query.NotifyUser, origin, code, codeID string) error { + url := domain.PasswordlessInitCodeLink(origin+login.HandlerPrefix+login.EndpointPasswordlessRegistration, user.ID, user.ResourceOwner, codeID, code) + return notify(url, nil, domain.PasswordlessRegistrationMessageType, true) } diff --git a/internal/notification/types/phone_verification_code.go b/internal/notification/types/phone_verification_code.go index e37d39a1ea0..88eb744c4ba 100644 --- a/internal/notification/types/phone_verification_code.go +++ b/internal/notification/types/phone_verification_code.go @@ -1,38 +1,12 @@ package types import ( - "context" - "fmt" - - "github.com/zitadel/zitadel/internal/crypto" "github.com/zitadel/zitadel/internal/domain" - "github.com/zitadel/zitadel/internal/i18n" - "github.com/zitadel/zitadel/internal/notification/channels/fs" - "github.com/zitadel/zitadel/internal/notification/channels/log" - "github.com/zitadel/zitadel/internal/notification/channels/twilio" - "github.com/zitadel/zitadel/internal/notification/templates" - es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model" - view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" + "github.com/zitadel/zitadel/internal/query" ) -type PhoneVerificationCodeData struct { - UserID string -} - -func SendPhoneVerificationCode(ctx context.Context, translator *i18n.Translator, user *view_model.NotifyUser, code *es_model.PhoneCode, getTwilioConfig func(ctx context.Context) (*twilio.TwilioConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), alg crypto.EncryptionAlgorithm) error { - codeString, err := crypto.DecryptString(code.Code, alg) - if err != nil { - return err - } - var args = mapNotifyUserToArgs(user) - args["Code"] = codeString - - text := translator.Localize(fmt.Sprintf("%s.%s", domain.VerifyPhoneMessageType, domain.MessageText), args, user.PreferredLanguage) - - codeData := &PhoneVerificationCodeData{UserID: user.ID} - template, err := templates.ParseTemplateText(text, codeData) - if err != nil { - return err - } - return generateSms(ctx, user, template, getTwilioConfig, getFileSystemProvider, getLogProvider, true) +func (notify Notify) SendPhoneVerificationCode(user *query.NotifyUser, origin, code string) error { + args := make(map[string]interface{}) + args["Code"] = code + return notify("", args, domain.VerifyPhoneMessageType, true) } diff --git a/internal/notification/types/templateData.go b/internal/notification/types/templateData.go index ae464f69e1b..465e17555c1 100644 --- a/internal/notification/types/templateData.go +++ b/internal/notification/types/templateData.go @@ -11,7 +11,7 @@ import ( func GetTemplateData(translator *i18n.Translator, translateArgs map[string]interface{}, assetsPrefix, href, msgType, lang string, policy *query.LabelPolicy) templates.TemplateData { templateData := templates.TemplateData{ - Href: href, + URL: href, PrimaryColor: templates.DefaultPrimaryColor, BackgroundColor: templates.DefaultBackgroundColor, FontColor: templates.DefaultFontColor, diff --git a/internal/notification/types/user_email.go b/internal/notification/types/user_email.go index 7b4cf37ef90..afcc3028355 100644 --- a/internal/notification/types/user_email.go +++ b/internal/notification/types/user_email.go @@ -10,11 +10,10 @@ import ( "github.com/zitadel/zitadel/internal/notification/channels/smtp" "github.com/zitadel/zitadel/internal/notification/messages" "github.com/zitadel/zitadel/internal/notification/senders" - - view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" + "github.com/zitadel/zitadel/internal/query" ) -func generateEmail(ctx context.Context, user *view_model.NotifyUser, subject, content string, smtpConfig func(ctx context.Context) (*smtp.EmailConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), lastEmail bool) error { +func generateEmail(ctx context.Context, user *query.NotifyUser, subject, content string, smtpConfig func(ctx context.Context) (*smtp.EmailConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), lastEmail bool) error { content = html.UnescapeString(content) message := &messages.Email{ Recipients: []string{user.VerifiedEmail}, @@ -36,20 +35,22 @@ func generateEmail(ctx context.Context, user *view_model.NotifyUser, subject, co return channelChain.HandleMessage(message) } -func mapNotifyUserToArgs(user *view_model.NotifyUser) map[string]interface{} { - return map[string]interface{}{ - "UserName": user.UserName, - "FirstName": user.FirstName, - "LastName": user.LastName, - "NickName": user.NickName, - "DisplayName": user.DisplayName, - "LastEmail": user.LastEmail, - "VerifiedEmail": user.VerifiedEmail, - "LastPhone": user.LastPhone, - "VerifiedPhone": user.VerifiedPhone, - "PreferredLoginName": user.PreferredLoginName, - "LoginNames": user.LoginNames, - "ChangeDate": user.ChangeDate, - "CreationDate": user.CreationDate, +func mapNotifyUserToArgs(user *query.NotifyUser, args map[string]interface{}) map[string]interface{} { + if args == nil { + args = make(map[string]interface{}) } + args["UserName"] = user.Username + args["FirstName"] = user.FirstName + args["LastName"] = user.LastName + args["NickName"] = user.NickName + args["DisplayName"] = user.DisplayName + args["LastEmail"] = user.LastEmail + args["VerifiedEmail"] = user.VerifiedEmail + args["LastPhone"] = user.LastPhone + args["VerifiedPhone"] = user.VerifiedPhone + args["PreferredLoginName"] = user.PreferredLoginName + args["LoginNames"] = user.LoginNames + args["ChangeDate"] = user.ChangeDate + args["CreationDate"] = user.CreationDate + return args } diff --git a/internal/notification/types/user_phone.go b/internal/notification/types/user_phone.go index 5d7663edb14..ea9462ff97f 100644 --- a/internal/notification/types/user_phone.go +++ b/internal/notification/types/user_phone.go @@ -3,20 +3,22 @@ package types import ( "context" + "github.com/zitadel/logging" + caos_errors "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/notification/channels/fs" "github.com/zitadel/zitadel/internal/notification/channels/log" "github.com/zitadel/zitadel/internal/notification/channels/twilio" "github.com/zitadel/zitadel/internal/notification/messages" "github.com/zitadel/zitadel/internal/notification/senders" - view_model "github.com/zitadel/zitadel/internal/user/repository/view/model" + "github.com/zitadel/zitadel/internal/query" ) -func generateSms(ctx context.Context, user *view_model.NotifyUser, content string, getTwilioProvider func(ctx context.Context) (*twilio.TwilioConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), lastPhone bool) error { +func generateSms(ctx context.Context, user *query.NotifyUser, content string, getTwilioProvider func(ctx context.Context) (*twilio.TwilioConfig, error), getFileSystemProvider func(ctx context.Context) (*fs.FSConfig, error), getLogProvider func(ctx context.Context) (*log.LogConfig, error), lastPhone bool) error { number := "" - twilio, err := getTwilioProvider(ctx) + twilioConfig, err := getTwilioProvider(ctx) if err == nil { - number = twilio.SenderNumber + number = twilioConfig.SenderNumber } message := &messages.SMS{ SenderPhoneNumber: number, @@ -27,7 +29,8 @@ func generateSms(ctx context.Context, user *view_model.NotifyUser, content strin message.RecipientPhoneNumber = user.LastPhone } - channelChain, err := senders.SMSChannels(ctx, twilio, getFileSystemProvider, getLogProvider) + channelChain, err := senders.SMSChannels(ctx, twilioConfig, getFileSystemProvider, getLogProvider) + logging.OnError(err).Error("could not create sms channel") if channelChain.Len() == 0 { return caos_errors.ThrowPreconditionFailed(nil, "PHONE-w8nfow", "Errors.Notification.Channels.NotPresent") diff --git a/internal/query/iam_member_test.go b/internal/query/iam_member_test.go index 0d740e58462..50896e73d0e 100644 --- a/internal/query/iam_member_test.go +++ b/internal/query/iam_member_test.go @@ -20,18 +20,18 @@ var ( ", members.user_id" + ", members.roles" + ", projections.login_names.login_name" + - ", projections.users_humans.email" + - ", projections.users_humans.first_name" + - ", projections.users_humans.last_name" + - ", projections.users_humans.display_name" + - ", projections.users_machines.name" + - ", projections.users_humans.avatar_key" + + ", projections.users2_humans.email" + + ", projections.users2_humans.first_name" + + ", projections.users2_humans.last_name" + + ", projections.users2_humans.display_name" + + ", projections.users2_machines.name" + + ", projections.users2_humans.avatar_key" + ", COUNT(*) OVER () " + "FROM projections.instance_members as members " + - "LEFT JOIN projections.users_humans " + - "ON members.user_id = projections.users_humans.user_id " + - "LEFT JOIN projections.users_machines " + - "ON members.user_id = projections.users_machines.user_id " + + "LEFT JOIN projections.users2_humans " + + "ON members.user_id = projections.users2_humans.user_id " + + "LEFT JOIN projections.users2_machines " + + "ON members.user_id = projections.users2_machines.user_id " + "LEFT JOIN projections.login_names " + "ON members.user_id = projections.login_names.user_id " + "WHERE projections.login_names.is_primary = $1") diff --git a/internal/query/org_member_test.go b/internal/query/org_member_test.go index e176774c31e..4b89ad59dfd 100644 --- a/internal/query/org_member_test.go +++ b/internal/query/org_member_test.go @@ -20,18 +20,18 @@ var ( ", members.user_id" + ", members.roles" + ", projections.login_names.login_name" + - ", projections.users_humans.email" + - ", projections.users_humans.first_name" + - ", projections.users_humans.last_name" + - ", projections.users_humans.display_name" + - ", projections.users_machines.name" + - ", projections.users_humans.avatar_key" + + ", projections.users2_humans.email" + + ", projections.users2_humans.first_name" + + ", projections.users2_humans.last_name" + + ", projections.users2_humans.display_name" + + ", projections.users2_machines.name" + + ", projections.users2_humans.avatar_key" + ", COUNT(*) OVER () " + "FROM projections.org_members as members " + - "LEFT JOIN projections.users_humans " + - "ON members.user_id = projections.users_humans.user_id " + - "LEFT JOIN projections.users_machines " + - "ON members.user_id = projections.users_machines.user_id " + + "LEFT JOIN projections.users2_humans " + + "ON members.user_id = projections.users2_humans.user_id " + + "LEFT JOIN projections.users2_machines " + + "ON members.user_id = projections.users2_machines.user_id " + "LEFT JOIN projections.login_names " + "ON members.user_id = projections.login_names.user_id " + "WHERE projections.login_names.is_primary = $1") diff --git a/internal/query/project_grant_member_test.go b/internal/query/project_grant_member_test.go index 58069c29086..d449dd926e7 100644 --- a/internal/query/project_grant_member_test.go +++ b/internal/query/project_grant_member_test.go @@ -20,18 +20,18 @@ var ( ", members.user_id" + ", members.roles" + ", projections.login_names.login_name" + - ", projections.users_humans.email" + - ", projections.users_humans.first_name" + - ", projections.users_humans.last_name" + - ", projections.users_humans.display_name" + - ", projections.users_machines.name" + - ", projections.users_humans.avatar_key" + + ", projections.users2_humans.email" + + ", projections.users2_humans.first_name" + + ", projections.users2_humans.last_name" + + ", projections.users2_humans.display_name" + + ", projections.users2_machines.name" + + ", projections.users2_humans.avatar_key" + ", COUNT(*) OVER () " + "FROM projections.project_grant_members as members " + - "LEFT JOIN projections.users_humans " + - "ON members.user_id = projections.users_humans.user_id " + - "LEFT JOIN projections.users_machines " + - "ON members.user_id = projections.users_machines.user_id " + + "LEFT JOIN projections.users2_humans " + + "ON members.user_id = projections.users2_humans.user_id " + + "LEFT JOIN projections.users2_machines " + + "ON members.user_id = projections.users2_machines.user_id " + "LEFT JOIN projections.login_names " + "ON members.user_id = projections.login_names.user_id " + "LEFT JOIN projections.project_grants " + diff --git a/internal/query/project_member_test.go b/internal/query/project_member_test.go index 222153a1003..dbef1b82837 100644 --- a/internal/query/project_member_test.go +++ b/internal/query/project_member_test.go @@ -20,18 +20,18 @@ var ( ", members.user_id" + ", members.roles" + ", projections.login_names.login_name" + - ", projections.users_humans.email" + - ", projections.users_humans.first_name" + - ", projections.users_humans.last_name" + - ", projections.users_humans.display_name" + - ", projections.users_machines.name" + - ", projections.users_humans.avatar_key" + + ", projections.users2_humans.email" + + ", projections.users2_humans.first_name" + + ", projections.users2_humans.last_name" + + ", projections.users2_humans.display_name" + + ", projections.users2_machines.name" + + ", projections.users2_humans.avatar_key" + ", COUNT(*) OVER () " + "FROM projections.project_members as members " + - "LEFT JOIN projections.users_humans " + - "ON members.user_id = projections.users_humans.user_id " + - "LEFT JOIN projections.users_machines " + - "ON members.user_id = projections.users_machines.user_id " + + "LEFT JOIN projections.users2_humans " + + "ON members.user_id = projections.users2_humans.user_id " + + "LEFT JOIN projections.users2_machines " + + "ON members.user_id = projections.users2_machines.user_id " + "LEFT JOIN projections.login_names " + "ON members.user_id = projections.login_names.user_id " + "WHERE projections.login_names.is_primary = $1") diff --git a/internal/query/projection/label_policy.go b/internal/query/projection/label_policy.go index f15a76c6eeb..3bd2f61d8f4 100644 --- a/internal/query/projection/label_policy.go +++ b/internal/query/projection/label_policy.go @@ -358,6 +358,32 @@ func (p *labelPolicyProjection) reduceActivated(event eventstore.Event) (*handle handler.NewCol(LabelPolicyDarkLogoURLCol, nil), handler.NewCol(LabelPolicyDarkIconURLCol, nil), }, + []handler.Column{ + handler.NewCol(LabelPolicyChangeDateCol, nil), + handler.NewCol(LabelPolicySequenceCol, nil), + handler.NewCol(LabelPolicyStateCol, nil), + handler.NewCol(LabelPolicyCreationDateCol, nil), + handler.NewCol(LabelPolicyResourceOwnerCol, nil), + handler.NewCol(LabelPolicyInstanceIDCol, nil), + handler.NewCol(LabelPolicyIDCol, nil), + handler.NewCol(LabelPolicyIsDefaultCol, nil), + handler.NewCol(LabelPolicyHideLoginNameSuffixCol, nil), + handler.NewCol(LabelPolicyFontURLCol, nil), + handler.NewCol(LabelPolicyWatermarkDisabledCol, nil), + handler.NewCol(LabelPolicyShouldErrorPopupCol, nil), + handler.NewCol(LabelPolicyLightPrimaryColorCol, nil), + handler.NewCol(LabelPolicyLightWarnColorCol, nil), + handler.NewCol(LabelPolicyLightBackgroundColorCol, nil), + handler.NewCol(LabelPolicyLightFontColorCol, nil), + handler.NewCol(LabelPolicyLightLogoURLCol, nil), + handler.NewCol(LabelPolicyLightIconURLCol, nil), + handler.NewCol(LabelPolicyDarkPrimaryColorCol, nil), + handler.NewCol(LabelPolicyDarkWarnColorCol, nil), + handler.NewCol(LabelPolicyDarkBackgroundColorCol, nil), + handler.NewCol(LabelPolicyDarkFontColorCol, nil), + handler.NewCol(LabelPolicyDarkLogoURLCol, nil), + handler.NewCol(LabelPolicyDarkIconURLCol, nil), + }, []handler.Condition{ handler.NewCond(LabelPolicyIDCol, event.Aggregate().ID), handler.NewCond(LabelPolicyStateCol, domain.LabelPolicyStatePreview), diff --git a/internal/query/projection/projection.go b/internal/query/projection/projection.go index 4e377b86285..1995831dfa4 100644 --- a/internal/query/projection/projection.go +++ b/internal/query/projection/projection.go @@ -18,6 +18,7 @@ const ( ) var ( + projectionConfig crdb.StatementHandlerConfig OrgProjection *orgProjection ActionProjection *actionProjection FlowProjection *flowProjection @@ -58,10 +59,11 @@ var ( OIDCSettingsProjection *oidcSettingsProjection DebugNotificationProviderProjection *debugNotificationProviderProjection KeyProjection *keyProjection + NotificationsProjection interface{} ) func Start(ctx context.Context, sqlClient *sql.DB, es *eventstore.Eventstore, config Config, keyEncryptionAlgorithm crypto.EncryptionAlgorithm) error { - projectionConfig := crdb.StatementHandlerConfig{ + projectionConfig = crdb.StatementHandlerConfig{ ProjectionHandlerConfig: handler.ProjectionHandlerConfig{ HandlerConfig: handler.HandlerConfig{ Eventstore: es, @@ -120,6 +122,11 @@ func Start(ctx context.Context, sqlClient *sql.DB, es *eventstore.Eventstore, co return nil } +func ApplyCustomConfig(customConfig CustomConfig) crdb.StatementHandlerConfig { + return applyCustomConfig(projectionConfig, customConfig) + +} + func applyCustomConfig(config crdb.StatementHandlerConfig, customConfig CustomConfig) crdb.StatementHandlerConfig { if customConfig.BulkLimit != nil { config.BulkLimit = *customConfig.BulkLimit diff --git a/internal/query/projection/user.go b/internal/query/projection/user.go index 800a21d063f..fc762761d65 100644 --- a/internal/query/projection/user.go +++ b/internal/query/projection/user.go @@ -17,9 +17,10 @@ type userProjection struct { } const ( - UserTable = "projections.users" + UserTable = "projections.users2" UserHumanTable = UserTable + "_" + UserHumanSuffix UserMachineTable = UserTable + "_" + UserMachineSuffix + UserNotifyTable = UserTable + "_" + UserNotifySuffix UserIDCol = "id" UserCreationDateCol = "creation_date" @@ -58,6 +59,16 @@ const ( MachineUserInstanceIDCol = "instance_id" MachineNameCol = "name" MachineDescriptionCol = "description" + + // notify + UserNotifySuffix = "notifications" + NotifyUserIDCol = "user_id" + NotifyInstanceIDCol = "instance_id" + NotifyLastEmailCol = "last_email" + NotifyVerifiedEmailCol = "verified_email" + NotifyLastPhoneCol = "last_phone" + NotifyVerifiedPhoneCol = "verified_phone" + NotifyPasswordSetCol = "password_set" ) func newUserProjection(ctx context.Context, config crdb.StatementHandlerConfig) *userProjection { @@ -110,6 +121,19 @@ func newUserProjection(ctx context.Context, config crdb.StatementHandlerConfig) UserMachineSuffix, crdb.WithForeignKey(crdb.NewForeignKeyOfPublicKeys("fk_machine_ref_user")), ), + crdb.NewSuffixedTable([]*crdb.Column{ + crdb.NewColumn(NotifyUserIDCol, crdb.ColumnTypeText), + crdb.NewColumn(NotifyInstanceIDCol, crdb.ColumnTypeText), + crdb.NewColumn(NotifyLastEmailCol, crdb.ColumnTypeText, crdb.Nullable()), + crdb.NewColumn(NotifyVerifiedEmailCol, crdb.ColumnTypeText, crdb.Nullable()), + crdb.NewColumn(NotifyLastPhoneCol, crdb.ColumnTypeText, crdb.Nullable()), + crdb.NewColumn(NotifyVerifiedPhoneCol, crdb.ColumnTypeText, crdb.Nullable()), + crdb.NewColumn(NotifyPasswordSetCol, crdb.ColumnTypeBool, crdb.Default(false)), + }, + crdb.NewPrimaryKey(NotifyUserIDCol, NotifyInstanceIDCol), + UserNotifySuffix, + crdb.WithForeignKey(crdb.NewForeignKeyOfPublicKeys("fk_notify_ref_user")), + ), ) p.StatementHandler = crdb.NewStatementHandler(ctx, config) return p @@ -240,6 +264,10 @@ func (p *userProjection) reducers() []handler.AggregateReducer { Event: user.MachineChangedEventType, Reduce: p.reduceMachineChanged, }, + { + Event: user.HumanPasswordChangedType, + Reduce: p.reduceHumanPasswordChanged, + }, }, }, } @@ -280,6 +308,16 @@ func (p *userProjection) reduceHumanAdded(event eventstore.Event) (*handler.Stat }, crdb.WithTableSuffix(UserHumanSuffix), ), + crdb.AddCreateStatement( + []handler.Column{ + handler.NewCol(NotifyUserIDCol, e.Aggregate().ID), + handler.NewCol(NotifyInstanceIDCol, e.Aggregate().InstanceID), + handler.NewCol(NotifyLastEmailCol, e.EmailAddress), + handler.NewCol(NotifyLastPhoneCol, &sql.NullString{String: e.PhoneNumber, Valid: e.PhoneNumber != ""}), + handler.NewCol(NotifyPasswordSetCol, e.Secret != nil), + }, + crdb.WithTableSuffix(UserNotifySuffix), + ), ), nil } @@ -318,6 +356,16 @@ func (p *userProjection) reduceHumanRegistered(event eventstore.Event) (*handler }, crdb.WithTableSuffix(UserHumanSuffix), ), + crdb.AddCreateStatement( + []handler.Column{ + handler.NewCol(NotifyUserIDCol, e.Aggregate().ID), + handler.NewCol(NotifyInstanceIDCol, e.Aggregate().InstanceID), + handler.NewCol(NotifyLastEmailCol, e.EmailAddress), + handler.NewCol(NotifyLastPhoneCol, &sql.NullString{String: e.PhoneNumber, Valid: e.PhoneNumber != ""}), + handler.NewCol(NotifyPasswordSetCol, e.Secret != nil), + }, + crdb.WithTableSuffix(UserNotifySuffix), + ), ), nil } @@ -552,6 +600,16 @@ func (p *userProjection) reduceHumanPhoneChanged(event eventstore.Event) (*handl }, crdb.WithTableSuffix(UserHumanSuffix), ), + crdb.AddUpdateStatement( + []handler.Column{ + handler.NewCol(NotifyLastPhoneCol, &sql.NullString{String: e.PhoneNumber, Valid: e.PhoneNumber != ""}), + }, + []handler.Condition{ + handler.NewCond(NotifyUserIDCol, e.Aggregate().ID), + handler.NewCond(NotifyInstanceIDCol, e.Aggregate().InstanceID), + }, + crdb.WithTableSuffix(UserNotifySuffix), + ), ), nil } @@ -584,6 +642,17 @@ func (p *userProjection) reduceHumanPhoneRemoved(event eventstore.Event) (*handl }, crdb.WithTableSuffix(UserHumanSuffix), ), + crdb.AddUpdateStatement( + []handler.Column{ + handler.NewCol(NotifyLastPhoneCol, nil), + handler.NewCol(NotifyVerifiedPhoneCol, nil), + }, + []handler.Condition{ + handler.NewCond(NotifyUserIDCol, e.Aggregate().ID), + handler.NewCond(NotifyInstanceIDCol, e.Aggregate().InstanceID), + }, + crdb.WithTableSuffix(UserNotifySuffix), + ), ), nil } @@ -615,6 +684,23 @@ func (p *userProjection) reduceHumanPhoneVerified(event eventstore.Event) (*hand }, crdb.WithTableSuffix(UserHumanSuffix), ), + crdb.AddCopyStatement( + []handler.Column{ + handler.NewCol(NotifyUserIDCol, nil), + handler.NewCol(NotifyInstanceIDCol, nil), + handler.NewCol(NotifyLastPhoneCol, nil), + }, + []handler.Column{ + handler.NewCol(NotifyUserIDCol, nil), + handler.NewCol(NotifyInstanceIDCol, nil), + handler.NewCol(NotifyVerifiedPhoneCol, nil), + }, + []handler.Condition{ + handler.NewCond(NotifyUserIDCol, e.Aggregate().ID), + handler.NewCond(NotifyInstanceIDCol, e.Aggregate().InstanceID), + }, + crdb.WithTableSuffix(UserNotifySuffix), + ), ), nil } @@ -647,6 +733,16 @@ func (p *userProjection) reduceHumanEmailChanged(event eventstore.Event) (*handl }, crdb.WithTableSuffix(UserHumanSuffix), ), + crdb.AddUpdateStatement( + []handler.Column{ + handler.NewCol(NotifyLastEmailCol, &sql.NullString{String: e.EmailAddress, Valid: e.EmailAddress != ""}), + }, + []handler.Condition{ + handler.NewCond(NotifyUserIDCol, e.Aggregate().ID), + handler.NewCond(NotifyInstanceIDCol, e.Aggregate().InstanceID), + }, + crdb.WithTableSuffix(UserNotifySuffix), + ), ), nil } @@ -678,6 +774,23 @@ func (p *userProjection) reduceHumanEmailVerified(event eventstore.Event) (*hand }, crdb.WithTableSuffix(UserHumanSuffix), ), + crdb.AddCopyStatement( + []handler.Column{ + handler.NewCol(NotifyUserIDCol, nil), + handler.NewCol(NotifyInstanceIDCol, nil), + handler.NewCol(NotifyLastEmailCol, nil), + }, + []handler.Column{ + handler.NewCol(NotifyUserIDCol, nil), + handler.NewCol(NotifyInstanceIDCol, nil), + handler.NewCol(NotifyVerifiedEmailCol, nil), + }, + []handler.Condition{ + handler.NewCond(NotifyUserIDCol, e.Aggregate().ID), + handler.NewCond(NotifyInstanceIDCol, e.Aggregate().InstanceID), + }, + crdb.WithTableSuffix(UserNotifySuffix), + ), ), nil } @@ -743,6 +856,25 @@ func (p *userProjection) reduceHumanAvatarRemoved(event eventstore.Event) (*hand ), nil } +func (p *userProjection) reduceHumanPasswordChanged(event eventstore.Event) (*handler.Statement, error) { + e, ok := event.(*user.HumanPasswordChangedEvent) + if !ok { + return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-jqXUY", "reduce.wrong.event.type %s", user.HumanPasswordChangedType) + } + + return crdb.NewUpdateStatement( + e, + []handler.Column{ + handler.NewCol(NotifyPasswordSetCol, true), + }, + []handler.Condition{ + handler.NewCond(NotifyUserIDCol, e.Aggregate().ID), + handler.NewCond(NotifyInstanceIDCol, e.Aggregate().InstanceID), + }, + crdb.WithTableSuffix(UserNotifySuffix), + ), nil +} + func (p *userProjection) reduceMachineAdded(event eventstore.Event) (*handler.Statement, error) { e, ok := event.(*user.MachineAddedEvent) if !ok { diff --git a/internal/query/projection/user_test.go b/internal/query/projection/user_test.go index f65da31458d..085192161b2 100644 --- a/internal/query/projection/user_test.go +++ b/internal/query/projection/user_test.go @@ -50,7 +50,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.users (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + expectedStmt: "INSERT INTO projections.users2 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "agg-id", anyArg{}, @@ -64,7 +64,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.users_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", + expectedStmt: "INSERT INTO projections.users2_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -78,6 +78,16 @@ func TestUserProjection_reduces(t *testing.T) { &sql.NullString{String: "+41 00 000 00 00", Valid: true}, }, }, + { + expectedStmt: "INSERT INTO projections.users2_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + "email@zitadel.com", + &sql.NullString{String: "+41 00 000 00 00", Valid: true}, + false, + }, + }, }, }, }, @@ -110,7 +120,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.users (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + expectedStmt: "INSERT INTO projections.users2 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "agg-id", anyArg{}, @@ -124,7 +134,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.users_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", + expectedStmt: "INSERT INTO projections.users2_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -138,6 +148,16 @@ func TestUserProjection_reduces(t *testing.T) { &sql.NullString{String: "+41 00 000 00 00", Valid: true}, }, }, + { + expectedStmt: "INSERT INTO projections.users2_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + "email@zitadel.com", + &sql.NullString{String: "+41 00 000 00 00", Valid: true}, + false, + }, + }, }, }, }, @@ -165,7 +185,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.users (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + expectedStmt: "INSERT INTO projections.users2 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "agg-id", anyArg{}, @@ -179,7 +199,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.users_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", + expectedStmt: "INSERT INTO projections.users2_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -193,6 +213,16 @@ func TestUserProjection_reduces(t *testing.T) { &sql.NullString{}, }, }, + { + expectedStmt: "INSERT INTO projections.users2_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + "email@zitadel.com", + &sql.NullString{String: "", Valid: false}, + false, + }, + }, }, }, }, @@ -225,7 +255,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.users (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + expectedStmt: "INSERT INTO projections.users2 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "agg-id", anyArg{}, @@ -239,7 +269,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.users_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", + expectedStmt: "INSERT INTO projections.users2_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -253,6 +283,16 @@ func TestUserProjection_reduces(t *testing.T) { &sql.NullString{String: "+41 00 000 00 00", Valid: true}, }, }, + { + expectedStmt: "INSERT INTO projections.users2_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + "email@zitadel.com", + &sql.NullString{String: "+41 00 000 00 00", Valid: true}, + false, + }, + }, }, }, }, @@ -285,7 +325,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.users (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + expectedStmt: "INSERT INTO projections.users2 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "agg-id", anyArg{}, @@ -299,7 +339,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.users_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", + expectedStmt: "INSERT INTO projections.users2_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -313,6 +353,16 @@ func TestUserProjection_reduces(t *testing.T) { &sql.NullString{String: "+41 00 000 00 00", Valid: true}, }, }, + { + expectedStmt: "INSERT INTO projections.users2_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + "email@zitadel.com", + &sql.NullString{String: "+41 00 000 00 00", Valid: true}, + false, + }, + }, }, }, }, @@ -340,7 +390,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.users (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + expectedStmt: "INSERT INTO projections.users2 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "agg-id", anyArg{}, @@ -354,7 +404,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.users_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", + expectedStmt: "INSERT INTO projections.users2_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -368,6 +418,16 @@ func TestUserProjection_reduces(t *testing.T) { &sql.NullString{}, }, }, + { + expectedStmt: "INSERT INTO projections.users2_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + "email@zitadel.com", + &sql.NullString{String: "", Valid: false}, + false, + }, + }, }, }, }, @@ -390,7 +450,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (state) = ($1) WHERE (id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2 SET (state) = ($1) WHERE (id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ domain.UserStateInitial, "agg-id", @@ -419,7 +479,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (state) = ($1) WHERE (id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2 SET (state) = ($1) WHERE (id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ domain.UserStateInitial, "agg-id", @@ -448,7 +508,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (state) = ($1) WHERE (id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2 SET (state) = ($1) WHERE (id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ domain.UserStateActive, "agg-id", @@ -477,7 +537,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (state) = ($1) WHERE (id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2 SET (state) = ($1) WHERE (id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ domain.UserStateActive, "agg-id", @@ -506,7 +566,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", + expectedStmt: "UPDATE projections.users2 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", expectedArgs: []interface{}{ anyArg{}, domain.UserStateLocked, @@ -537,7 +597,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", + expectedStmt: "UPDATE projections.users2 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", expectedArgs: []interface{}{ anyArg{}, domain.UserStateActive, @@ -568,7 +628,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", + expectedStmt: "UPDATE projections.users2 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", expectedArgs: []interface{}{ anyArg{}, domain.UserStateInactive, @@ -599,7 +659,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", + expectedStmt: "UPDATE projections.users2 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", expectedArgs: []interface{}{ anyArg{}, domain.UserStateActive, @@ -630,7 +690,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "DELETE FROM projections.users WHERE (id = $1) AND (instance_id = $2)", + expectedStmt: "DELETE FROM projections.users2 WHERE (id = $1) AND (instance_id = $2)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -660,7 +720,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, username, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", + expectedStmt: "UPDATE projections.users2 SET (change_date, username, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)", expectedArgs: []interface{}{ anyArg{}, "username", @@ -698,7 +758,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -707,7 +767,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (first_name, last_name, nick_name, display_name, preferred_language, gender) = ($1, $2, $3, $4, $5, $6) WHERE (user_id = $7) AND (instance_id = $8)", + expectedStmt: "UPDATE projections.users2_humans SET (first_name, last_name, nick_name, display_name, preferred_language, gender) = ($1, $2, $3, $4, $5, $6) WHERE (user_id = $7) AND (instance_id = $8)", expectedArgs: []interface{}{ "first-name", "last-name", @@ -748,7 +808,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -757,7 +817,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (first_name, last_name, nick_name, display_name, preferred_language, gender) = ($1, $2, $3, $4, $5, $6) WHERE (user_id = $7) AND (instance_id = $8)", + expectedStmt: "UPDATE projections.users2_humans SET (first_name, last_name, nick_name, display_name, preferred_language, gender) = ($1, $2, $3, $4, $5, $6) WHERE (user_id = $7) AND (instance_id = $8)", expectedArgs: []interface{}{ "first-name", "last-name", @@ -793,7 +853,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -802,7 +862,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ "+41 00 000 00 00", false, @@ -810,6 +870,14 @@ func TestUserProjection_reduces(t *testing.T) { "instance-id", }, }, + { + expectedStmt: "UPDATE projections.users2_notifications SET (last_phone) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedArgs: []interface{}{ + &sql.NullString{String: "+41 00 000 00 00", Valid: true}, + "agg-id", + "instance-id", + }, + }, }, }, }, @@ -834,7 +902,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -843,7 +911,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ "+41 00 000 00 00", false, @@ -851,6 +919,14 @@ func TestUserProjection_reduces(t *testing.T) { "instance-id", }, }, + { + expectedStmt: "UPDATE projections.users2_notifications SET (last_phone) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedArgs: []interface{}{ + &sql.NullString{String: "+41 00 000 00 00", Valid: true}, + "agg-id", + "instance-id", + }, + }, }, }, }, @@ -873,7 +949,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -882,7 +958,16 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", + expectedArgs: []interface{}{ + nil, + nil, + "agg-id", + "instance-id", + }, + }, + { + expectedStmt: "UPDATE projections.users2_notifications SET (last_phone, verified_phone) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ nil, nil, @@ -912,7 +997,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -921,7 +1006,16 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", + expectedArgs: []interface{}{ + nil, + nil, + "agg-id", + "instance-id", + }, + }, + { + expectedStmt: "UPDATE projections.users2_notifications SET (last_phone, verified_phone) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ nil, nil, @@ -951,7 +1045,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -960,13 +1054,20 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (is_phone_verified) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2_humans SET (is_phone_verified) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ true, "agg-id", "instance-id", }, }, + { + expectedStmt: "UPSERT INTO projections.users2_notifications (user_id, instance_id, verified_phone) SELECT user_id, instance_id, last_phone FROM projections.users2_notifications AS copy_table WHERE copy_table.user_id = $1 AND copy_table.instance_id = $2", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + }, + }, }, }, }, @@ -989,7 +1090,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -998,13 +1099,20 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (is_phone_verified) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2_humans SET (is_phone_verified) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ true, "agg-id", "instance-id", }, }, + { + expectedStmt: "UPSERT INTO projections.users2_notifications (user_id, instance_id, verified_phone) SELECT user_id, instance_id, last_phone FROM projections.users2_notifications AS copy_table WHERE copy_table.user_id = $1 AND copy_table.instance_id = $2", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + }, + }, }, }, }, @@ -1029,7 +1137,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -1038,7 +1146,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (email, is_email_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2_humans SET (email, is_email_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ "email@zitadel.com", false, @@ -1046,6 +1154,14 @@ func TestUserProjection_reduces(t *testing.T) { "instance-id", }, }, + { + expectedStmt: "UPDATE projections.users2_notifications SET (last_email) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedArgs: []interface{}{ + &sql.NullString{String: "email@zitadel.com", Valid: true}, + "agg-id", + "instance-id", + }, + }, }, }, }, @@ -1070,7 +1186,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -1079,7 +1195,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (email, is_email_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2_humans SET (email, is_email_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ "email@zitadel.com", false, @@ -1087,6 +1203,14 @@ func TestUserProjection_reduces(t *testing.T) { "instance-id", }, }, + { + expectedStmt: "UPDATE projections.users2_notifications SET (last_email) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedArgs: []interface{}{ + &sql.NullString{String: "email@zitadel.com", Valid: true}, + "agg-id", + "instance-id", + }, + }, }, }, }, @@ -1109,7 +1233,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -1118,13 +1242,20 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (is_email_verified) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2_humans SET (is_email_verified) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ true, "agg-id", "instance-id", }, }, + { + expectedStmt: "UPSERT INTO projections.users2_notifications (user_id, instance_id, verified_email) SELECT user_id, instance_id, last_email FROM projections.users2_notifications AS copy_table WHERE copy_table.user_id = $1 AND copy_table.instance_id = $2", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + }, + }, }, }, }, @@ -1147,7 +1278,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -1156,13 +1287,20 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (is_email_verified) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2_humans SET (is_email_verified) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ true, "agg-id", "instance-id", }, }, + { + expectedStmt: "UPSERT INTO projections.users2_notifications (user_id, instance_id, verified_email) SELECT user_id, instance_id, last_email FROM projections.users2_notifications AS copy_table WHERE copy_table.user_id = $1 AND copy_table.instance_id = $2", + expectedArgs: []interface{}{ + "agg-id", + "instance-id", + }, + }, }, }, }, @@ -1187,7 +1325,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -1196,7 +1334,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (avatar_key) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2_humans SET (avatar_key) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ "users/agg-id/avatar", "agg-id", @@ -1225,7 +1363,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -1234,7 +1372,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_humans SET (avatar_key) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2_humans SET (avatar_key) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ nil, "agg-id", @@ -1266,7 +1404,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.users (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + expectedStmt: "INSERT INTO projections.users2 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "agg-id", anyArg{}, @@ -1280,7 +1418,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.users_machines (user_id, instance_id, name, description) VALUES ($1, $2, $3, $4)", + expectedStmt: "INSERT INTO projections.users2_machines (user_id, instance_id, name, description) VALUES ($1, $2, $3, $4)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -1314,7 +1452,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "INSERT INTO projections.users (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + expectedStmt: "INSERT INTO projections.users2 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)", expectedArgs: []interface{}{ "agg-id", anyArg{}, @@ -1328,7 +1466,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "INSERT INTO projections.users_machines (user_id, instance_id, name, description) VALUES ($1, $2, $3, $4)", + expectedStmt: "INSERT INTO projections.users2_machines (user_id, instance_id, name, description) VALUES ($1, $2, $3, $4)", expectedArgs: []interface{}{ "agg-id", "instance-id", @@ -1361,7 +1499,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -1370,7 +1508,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_machines SET (name, description) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2_machines SET (name, description) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ "machine-name", "description", @@ -1402,7 +1540,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -1411,7 +1549,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_machines SET (name) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2_machines SET (name) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ "machine-name", "agg-id", @@ -1442,7 +1580,7 @@ func TestUserProjection_reduces(t *testing.T) { executer: &testExecuter{ executions: []execution{ { - expectedStmt: "UPDATE projections.users SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", + expectedStmt: "UPDATE projections.users2 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)", expectedArgs: []interface{}{ anyArg{}, uint64(15), @@ -1451,7 +1589,7 @@ func TestUserProjection_reduces(t *testing.T) { }, }, { - expectedStmt: "UPDATE projections.users_machines SET (description) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", + expectedStmt: "UPDATE projections.users2_machines SET (description) = ($1) WHERE (user_id = $2) AND (instance_id = $3)", expectedArgs: []interface{}{ "description", "agg-id", diff --git a/internal/query/user.go b/internal/query/user.go index 1fe93b61cab..1d928f38fe4 100644 --- a/internal/query/user.go +++ b/internal/query/user.go @@ -11,9 +11,7 @@ import ( "golang.org/x/text/language" "github.com/zitadel/zitadel/internal/api/authz" - "github.com/zitadel/zitadel/internal/domain" - "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/query/projection" ) @@ -92,6 +90,31 @@ type Machine struct { Description string } +type NotifyUser struct { + ID string + CreationDate time.Time + ChangeDate time.Time + ResourceOwner string + Sequence uint64 + State domain.UserState + Type domain.UserType + Username string + LoginNames []string + PreferredLoginName string + FirstName string + LastName string + NickName string + DisplayName string + AvatarKey string + PreferredLanguage language.Tag + Gender domain.Gender + LastEmail string + VerifiedEmail string + LastPhone string + VerifiedPhone string + PasswordSet bool +} + type UserSearchQueries struct { SearchRequest Queries []SearchQuery @@ -237,6 +260,38 @@ var ( } ) +var ( + notifyTable = table{ + name: projection.UserNotifyTable, + } + NotifyUserIDCol = Column{ + name: projection.NotifyUserIDCol, + table: notifyTable, + } + NotifyEmailCol = Column{ + name: projection.NotifyLastEmailCol, + table: notifyTable, + isOrderByLower: true, + } + NotifyVerifiedEmailCol = Column{ + name: projection.NotifyVerifiedEmailCol, + table: notifyTable, + isOrderByLower: true, + } + NotifyPhoneCol = Column{ + name: projection.NotifyLastPhoneCol, + table: notifyTable, + } + NotifyVerifiedPhoneCol = Column{ + name: projection.NotifyVerifiedPhoneCol, + table: notifyTable, + } + NotifyPasswordSetCol = Column{ + name: projection.NotifyPasswordSetCol, + table: notifyTable, + } +) + func (q *Queries) GetUserByID(ctx context.Context, shouldTriggered bool, userID string, queries ...SearchQuery) (*User, error) { if shouldTriggered { projection.UserProjection.TriggerBulk(ctx) @@ -327,6 +382,28 @@ func (q *Queries) GetHumanPhone(ctx context.Context, userID string, queries ...S return scan(row) } +func (q *Queries) GeNotifyUser(ctx context.Context, shouldTriggered bool, userID string, queries ...SearchQuery) (*NotifyUser, error) { + if shouldTriggered { + projection.UserProjection.TriggerBulk(ctx) + } + + instanceID := authz.GetInstance(ctx).InstanceID() + query, scan := prepareNotifyUserQuery(instanceID) + for _, q := range queries { + query = q.toQuery(query) + } + stmt, args, err := query.Where(sq.Eq{ + UserIDCol.identifier(): userID, + UserInstanceIDCol.identifier(): instanceID, + }).ToSql() + if err != nil { + return nil, errors.ThrowInternal(err, "QUERY-Err3g", "Errors.Query.SQLStatment") + } + + row := q.client.QueryRowContext(ctx, stmt, args...) + return scan(row) +} + func (q *Queries) SearchUsers(ctx context.Context, queries *UserSearchQueries) (*Users, error) { query, scan := prepareUsersQuery() stmt, args, err := queries.toQuery(query). @@ -748,6 +825,143 @@ func preparePhoneQuery() (sq.SelectBuilder, func(*sql.Row) (*Phone, error)) { } } +func prepareNotifyUserQuery(instanceID string) (sq.SelectBuilder, func(*sql.Row) (*NotifyUser, error)) { + loginNamesQuery, loginNamesArgs, err := sq.Select( + userLoginNamesUserIDCol.identifier(), + "ARRAY_AGG("+userLoginNamesNameCol.identifier()+") as "+userLoginNamesListCol.name). + From(userLoginNamesTable.identifier()). + GroupBy(userLoginNamesUserIDCol.identifier()). + Where(sq.Eq{ + userLoginNamesInstanceIDCol.identifier(): instanceID, + }).ToSql() + if err != nil { + return sq.SelectBuilder{}, nil + } + preferredLoginNameQuery, preferredLoginNameArgs, err := sq.Select( + userPreferredLoginNameUserIDCol.identifier(), + userPreferredLoginNameCol.identifier()). + From(userPreferredLoginNameTable.identifier()). + Where(sq.Eq{ + userPreferredLoginNameIsPrimaryCol.identifier(): true, + userPreferredLoginNameInstanceIDCol.identifier(): instanceID, + }).ToSql() + if err != nil { + return sq.SelectBuilder{}, nil + } + return sq.Select( + UserIDCol.identifier(), + UserCreationDateCol.identifier(), + UserChangeDateCol.identifier(), + UserResourceOwnerCol.identifier(), + UserSequenceCol.identifier(), + UserStateCol.identifier(), + UserTypeCol.identifier(), + UserUsernameCol.identifier(), + userLoginNamesListCol.identifier(), + userPreferredLoginNameCol.identifier(), + HumanUserIDCol.identifier(), + HumanFirstNameCol.identifier(), + HumanLastNameCol.identifier(), + HumanNickNameCol.identifier(), + HumanDisplayNameCol.identifier(), + HumanPreferredLanguageCol.identifier(), + HumanGenderCol.identifier(), + HumanAvatarURLCol.identifier(), + NotifyUserIDCol.identifier(), + NotifyEmailCol.identifier(), + NotifyVerifiedEmailCol.identifier(), + NotifyPhoneCol.identifier(), + NotifyVerifiedPhoneCol.identifier(), + NotifyPasswordSetCol.identifier(), + ). + From(userTable.identifier()). + LeftJoin(join(HumanUserIDCol, UserIDCol)). + LeftJoin(join(NotifyUserIDCol, UserIDCol)). + LeftJoin("("+loginNamesQuery+") as "+userLoginNamesTable.alias+" on "+userLoginNamesUserIDCol.identifier()+" = "+UserIDCol.identifier(), loginNamesArgs...). + LeftJoin("("+preferredLoginNameQuery+") as "+userPreferredLoginNameTable.alias+" on "+userPreferredLoginNameUserIDCol.identifier()+" = "+UserIDCol.identifier(), preferredLoginNameArgs...). + PlaceholderFormat(sq.Dollar), + func(row *sql.Row) (*NotifyUser, error) { + u := new(NotifyUser) + loginNames := pq.StringArray{} + preferredLoginName := sql.NullString{} + + humanID := sql.NullString{} + firstName := sql.NullString{} + lastName := sql.NullString{} + nickName := sql.NullString{} + displayName := sql.NullString{} + preferredLanguage := sql.NullString{} + gender := sql.NullInt32{} + avatarKey := sql.NullString{} + + notifyUserID := sql.NullString{} + notifyEmail := sql.NullString{} + notifyVerifiedEmail := sql.NullString{} + notifyPhone := sql.NullString{} + notifyVerifiedPhone := sql.NullString{} + notifyPasswordSet := sql.NullBool{} + + err := row.Scan( + &u.ID, + &u.CreationDate, + &u.ChangeDate, + &u.ResourceOwner, + &u.Sequence, + &u.State, + &u.Type, + &u.Username, + &loginNames, + &preferredLoginName, + &humanID, + &firstName, + &lastName, + &nickName, + &displayName, + &preferredLanguage, + &gender, + &avatarKey, + ¬ifyUserID, + ¬ifyEmail, + ¬ifyVerifiedEmail, + ¬ifyPhone, + ¬ifyVerifiedPhone, + ¬ifyPasswordSet, + ) + + if err != nil { + if errs.Is(err, sql.ErrNoRows) { + return nil, errors.ThrowNotFound(err, "QUERY-Dgqd2", "Errors.User.NotFound") + } + return nil, errors.ThrowInternal(err, "QUERY-Dbwsg", "Errors.Internal") + } + + if !notifyUserID.Valid { + return nil, errors.ThrowPreconditionFailed(nil, "QUERY-Sfw3f", "Errors.User.NotFound") + } + + u.LoginNames = loginNames + if preferredLoginName.Valid { + u.PreferredLoginName = preferredLoginName.String + } + if humanID.Valid { + u.FirstName = firstName.String + u.LastName = lastName.String + u.NickName = nickName.String + u.DisplayName = displayName.String + u.AvatarKey = avatarKey.String + u.PreferredLanguage = language.Make(preferredLanguage.String) + u.Gender = domain.Gender(gender.Int32) + } + u.LastEmail = notifyEmail.String + u.VerifiedEmail = notifyVerifiedEmail.String + u.LastPhone = notifyPhone.String + u.VerifiedPhone = notifyVerifiedPhone.String + u.PasswordSet = notifyPasswordSet.Bool + + return u, nil + } +} + func prepareUserUniqueQuery() (sq.SelectBuilder, func(*sql.Row) (bool, error)) { return sq.Select( UserIDCol.identifier(), diff --git a/internal/query/user_grant_test.go b/internal/query/user_grant_test.go index 3c978c1618b..9b3f24bb36b 100644 --- a/internal/query/user_grant_test.go +++ b/internal/query/user_grant_test.go @@ -24,14 +24,14 @@ var ( ", projections.user_grants.roles" + ", projections.user_grants.state" + ", projections.user_grants.user_id" + - ", projections.users.username" + - ", projections.users.type" + - ", projections.users.resource_owner" + - ", projections.users_humans.first_name" + - ", projections.users_humans.last_name" + - ", projections.users_humans.email" + - ", projections.users_humans.display_name" + - ", projections.users_humans.avatar_key" + + ", projections.users2.username" + + ", projections.users2.type" + + ", projections.users2.resource_owner" + + ", projections.users2_humans.first_name" + + ", projections.users2_humans.last_name" + + ", projections.users2_humans.email" + + ", projections.users2_humans.display_name" + + ", projections.users2_humans.avatar_key" + ", projections.login_names.login_name" + ", projections.user_grants.resource_owner" + ", projections.orgs.name" + @@ -39,8 +39,8 @@ var ( ", projections.user_grants.project_id" + ", projections.projects.name" + " FROM projections.user_grants" + - " LEFT JOIN projections.users ON projections.user_grants.user_id = projections.users.id" + - " LEFT JOIN projections.users_humans ON projections.user_grants.user_id = projections.users_humans.user_id" + + " LEFT JOIN projections.users2 ON projections.user_grants.user_id = projections.users2.id" + + " LEFT JOIN projections.users2_humans ON projections.user_grants.user_id = projections.users2_humans.user_id" + " LEFT JOIN projections.orgs ON projections.user_grants.resource_owner = projections.orgs.id" + " LEFT JOIN projections.projects ON projections.user_grants.project_id = projections.projects.id" + " LEFT JOIN projections.login_names ON projections.user_grants.user_id = projections.login_names.user_id" + @@ -78,14 +78,14 @@ var ( ", projections.user_grants.roles" + ", projections.user_grants.state" + ", projections.user_grants.user_id" + - ", projections.users.username" + - ", projections.users.type" + - ", projections.users.resource_owner" + - ", projections.users_humans.first_name" + - ", projections.users_humans.last_name" + - ", projections.users_humans.email" + - ", projections.users_humans.display_name" + - ", projections.users_humans.avatar_key" + + ", projections.users2.username" + + ", projections.users2.type" + + ", projections.users2.resource_owner" + + ", projections.users2_humans.first_name" + + ", projections.users2_humans.last_name" + + ", projections.users2_humans.email" + + ", projections.users2_humans.display_name" + + ", projections.users2_humans.avatar_key" + ", projections.login_names.login_name" + ", projections.user_grants.resource_owner" + ", projections.orgs.name" + @@ -94,8 +94,8 @@ var ( ", projections.projects.name" + ", COUNT(*) OVER ()" + " FROM projections.user_grants" + - " LEFT JOIN projections.users ON projections.user_grants.user_id = projections.users.id" + - " LEFT JOIN projections.users_humans ON projections.user_grants.user_id = projections.users_humans.user_id" + + " LEFT JOIN projections.users2 ON projections.user_grants.user_id = projections.users2.id" + + " LEFT JOIN projections.users2_humans ON projections.user_grants.user_id = projections.users2_humans.user_id" + " LEFT JOIN projections.orgs ON projections.user_grants.resource_owner = projections.orgs.id" + " LEFT JOIN projections.projects ON projections.user_grants.project_id = projections.projects.id" + " LEFT JOIN projections.login_names ON projections.user_grants.user_id = projections.login_names.user_id" + diff --git a/internal/query/user_test.go b/internal/query/user_test.go index 82958053d61..98a496511ed 100644 --- a/internal/query/user_test.go +++ b/internal/query/user_test.go @@ -17,43 +17,43 @@ import ( ) var ( - userQuery = `SELECT projections.users.id,` + - ` projections.users.creation_date,` + - ` projections.users.change_date,` + - ` projections.users.resource_owner,` + - ` projections.users.sequence,` + - ` projections.users.state,` + - ` projections.users.type,` + - ` projections.users.username,` + + userQuery = `SELECT projections.users2.id,` + + ` projections.users2.creation_date,` + + ` projections.users2.change_date,` + + ` projections.users2.resource_owner,` + + ` projections.users2.sequence,` + + ` projections.users2.state,` + + ` projections.users2.type,` + + ` projections.users2.username,` + ` login_names.loginnames,` + ` preferred_login_name.login_name,` + - ` projections.users_humans.user_id,` + - ` projections.users_humans.first_name,` + - ` projections.users_humans.last_name,` + - ` projections.users_humans.nick_name,` + - ` projections.users_humans.display_name,` + - ` projections.users_humans.preferred_language,` + - ` projections.users_humans.gender,` + - ` projections.users_humans.avatar_key,` + - ` projections.users_humans.email,` + - ` projections.users_humans.is_email_verified,` + - ` projections.users_humans.phone,` + - ` projections.users_humans.is_phone_verified,` + - ` projections.users_machines.user_id,` + - ` projections.users_machines.name,` + - ` projections.users_machines.description` + - ` FROM projections.users` + - ` LEFT JOIN projections.users_humans ON projections.users.id = projections.users_humans.user_id` + - ` LEFT JOIN projections.users_machines ON projections.users.id = projections.users_machines.user_id` + + ` projections.users2_humans.user_id,` + + ` projections.users2_humans.first_name,` + + ` projections.users2_humans.last_name,` + + ` projections.users2_humans.nick_name,` + + ` projections.users2_humans.display_name,` + + ` projections.users2_humans.preferred_language,` + + ` projections.users2_humans.gender,` + + ` projections.users2_humans.avatar_key,` + + ` projections.users2_humans.email,` + + ` projections.users2_humans.is_email_verified,` + + ` projections.users2_humans.phone,` + + ` projections.users2_humans.is_phone_verified,` + + ` projections.users2_machines.user_id,` + + ` projections.users2_machines.name,` + + ` projections.users2_machines.description` + + ` FROM projections.users2` + + ` LEFT JOIN projections.users2_humans ON projections.users2.id = projections.users2_humans.user_id` + + ` LEFT JOIN projections.users2_machines ON projections.users2.id = projections.users2_machines.user_id` + ` LEFT JOIN` + ` (SELECT login_names.user_id, ARRAY_AGG(login_names.login_name) as loginnames` + ` FROM projections.login_names as login_names` + ` WHERE login_names.instance_id = $1` + ` GROUP BY login_names.user_id) as login_names` + - ` on login_names.user_id = projections.users.id` + + ` on login_names.user_id = projections.users2.id` + ` LEFT JOIN` + ` (SELECT preferred_login_name.user_id, preferred_login_name.login_name FROM projections.login_names as preferred_login_name WHERE preferred_login_name.instance_id = $2 AND preferred_login_name.is_primary = $3) as preferred_login_name` + - ` on preferred_login_name.user_id = projections.users.id` + ` on preferred_login_name.user_id = projections.users2.id` userCols = []string{ "id", "creation_date", @@ -83,21 +83,21 @@ var ( "name", "description", } - profileQuery = `SELECT projections.users.id,` + - ` projections.users.creation_date,` + - ` projections.users.change_date,` + - ` projections.users.resource_owner,` + - ` projections.users.sequence,` + - ` projections.users_humans.user_id,` + - ` projections.users_humans.first_name,` + - ` projections.users_humans.last_name,` + - ` projections.users_humans.nick_name,` + - ` projections.users_humans.display_name,` + - ` projections.users_humans.preferred_language,` + - ` projections.users_humans.gender,` + - ` projections.users_humans.avatar_key` + - ` FROM projections.users` + - ` LEFT JOIN projections.users_humans ON projections.users.id = projections.users_humans.user_id` + profileQuery = `SELECT projections.users2.id,` + + ` projections.users2.creation_date,` + + ` projections.users2.change_date,` + + ` projections.users2.resource_owner,` + + ` projections.users2.sequence,` + + ` projections.users2_humans.user_id,` + + ` projections.users2_humans.first_name,` + + ` projections.users2_humans.last_name,` + + ` projections.users2_humans.nick_name,` + + ` projections.users2_humans.display_name,` + + ` projections.users2_humans.preferred_language,` + + ` projections.users2_humans.gender,` + + ` projections.users2_humans.avatar_key` + + ` FROM projections.users2` + + ` LEFT JOIN projections.users2_humans ON projections.users2.id = projections.users2_humans.user_id` profileCols = []string{ "id", "creation_date", @@ -113,16 +113,16 @@ var ( "gender", "avatar_key", } - emailQuery = `SELECT projections.users.id,` + - ` projections.users.creation_date,` + - ` projections.users.change_date,` + - ` projections.users.resource_owner,` + - ` projections.users.sequence,` + - ` projections.users_humans.user_id,` + - ` projections.users_humans.email,` + - ` projections.users_humans.is_email_verified` + - ` FROM projections.users` + - ` LEFT JOIN projections.users_humans ON projections.users.id = projections.users_humans.user_id` + emailQuery = `SELECT projections.users2.id,` + + ` projections.users2.creation_date,` + + ` projections.users2.change_date,` + + ` projections.users2.resource_owner,` + + ` projections.users2.sequence,` + + ` projections.users2_humans.user_id,` + + ` projections.users2_humans.email,` + + ` projections.users2_humans.is_email_verified` + + ` FROM projections.users2` + + ` LEFT JOIN projections.users2_humans ON projections.users2.id = projections.users2_humans.user_id` emailCols = []string{ "id", "creation_date", @@ -133,16 +133,16 @@ var ( "email", "is_email_verified", } - phoneQuery = `SELECT projections.users.id,` + - ` projections.users.creation_date,` + - ` projections.users.change_date,` + - ` projections.users.resource_owner,` + - ` projections.users.sequence,` + - ` projections.users_humans.user_id,` + - ` projections.users_humans.phone,` + - ` projections.users_humans.is_phone_verified` + - ` FROM projections.users` + - ` LEFT JOIN projections.users_humans ON projections.users.id = projections.users_humans.user_id` + phoneQuery = `SELECT projections.users2.id,` + + ` projections.users2.creation_date,` + + ` projections.users2.change_date,` + + ` projections.users2.resource_owner,` + + ` projections.users2.sequence,` + + ` projections.users2_humans.user_id,` + + ` projections.users2_humans.phone,` + + ` projections.users2_humans.is_phone_verified` + + ` FROM projections.users2` + + ` LEFT JOIN projections.users2_humans ON projections.users2.id = projections.users2_humans.user_id` phoneCols = []string{ "id", "creation_date", @@ -153,15 +153,14 @@ var ( "phone", "is_phone_verified", } - - userUniqueQuery = `SELECT projections.users.id,` + - ` projections.users.state,` + - ` projections.users.username,` + - ` projections.users_humans.user_id,` + - ` projections.users_humans.email,` + - ` projections.users_humans.is_email_verified` + - ` FROM projections.users` + - ` LEFT JOIN projections.users_humans ON projections.users.id = projections.users_humans.user_id` + userUniqueQuery = `SELECT projections.users2.id,` + + ` projections.users2.state,` + + ` projections.users2.username,` + + ` projections.users2_humans.user_id,` + + ` projections.users2_humans.email,` + + ` projections.users2_humans.is_email_verified` + + ` FROM projections.users2` + + ` LEFT JOIN projections.users2_humans ON projections.users2.id = projections.users2_humans.user_id` userUniqueCols = []string{ "id", "state", @@ -170,43 +169,107 @@ var ( "email", "is_email_verified", } - usersQuery = `SELECT projections.users.id,` + - ` projections.users.creation_date,` + - ` projections.users.change_date,` + - ` projections.users.resource_owner,` + - ` projections.users.sequence,` + - ` projections.users.state,` + - ` projections.users.type,` + - ` projections.users.username,` + + notifyUserQuery = `SELECT projections.users2.id,` + + ` projections.users2.creation_date,` + + ` projections.users2.change_date,` + + ` projections.users2.resource_owner,` + + ` projections.users2.sequence,` + + ` projections.users2.state,` + + ` projections.users2.type,` + + ` projections.users2.username,` + ` login_names.loginnames,` + ` preferred_login_name.login_name,` + - ` projections.users_humans.user_id,` + - ` projections.users_humans.first_name,` + - ` projections.users_humans.last_name,` + - ` projections.users_humans.nick_name,` + - ` projections.users_humans.display_name,` + - ` projections.users_humans.preferred_language,` + - ` projections.users_humans.gender,` + - ` projections.users_humans.avatar_key,` + - ` projections.users_humans.email,` + - ` projections.users_humans.is_email_verified,` + - ` projections.users_humans.phone,` + - ` projections.users_humans.is_phone_verified,` + - ` projections.users_machines.user_id,` + - ` projections.users_machines.name,` + - ` projections.users_machines.description,` + + ` projections.users2_humans.user_id,` + + ` projections.users2_humans.first_name,` + + ` projections.users2_humans.last_name,` + + ` projections.users2_humans.nick_name,` + + ` projections.users2_humans.display_name,` + + ` projections.users2_humans.preferred_language,` + + ` projections.users2_humans.gender,` + + ` projections.users2_humans.avatar_key,` + + ` projections.users2_notifications.user_id,` + + ` projections.users2_notifications.last_email,` + + ` projections.users2_notifications.verified_email,` + + ` projections.users2_notifications.last_phone,` + + ` projections.users2_notifications.verified_phone,` + + ` projections.users2_notifications.password_set` + + ` FROM projections.users2` + + ` LEFT JOIN projections.users2_humans ON projections.users2.id = projections.users2_humans.user_id` + + ` LEFT JOIN projections.users2_notifications ON projections.users2.id = projections.users2_notifications.user_id` + + ` LEFT JOIN` + + ` (SELECT login_names.user_id, ARRAY_AGG(login_names.login_name) as loginnames` + + ` FROM projections.login_names as login_names` + + ` WHERE login_names.instance_id = $1` + + ` GROUP BY login_names.user_id) as login_names` + + ` on login_names.user_id = projections.users2.id` + + ` LEFT JOIN` + + ` (SELECT preferred_login_name.user_id, preferred_login_name.login_name FROM projections.login_names as preferred_login_name WHERE preferred_login_name.instance_id = $2 AND preferred_login_name.is_primary = $3) as preferred_login_name` + + ` on preferred_login_name.user_id = projections.users2.id` + notifyUserCols = []string{ + "id", + "creation_date", + "change_date", + "resource_owner", + "sequence", + "state", + "type", + "username", + "loginnames", + "login_name", + //human + "user_id", + "first_name", + "last_name", + "nick_name", + "display_name", + "preferred_language", + "gender", + "avatar_key", + //machine + "user_id", + "last_email", + "verified_email", + "last_phone", + "verified_phone", + "password_set", + } + usersQuery = `SELECT projections.users2.id,` + + ` projections.users2.creation_date,` + + ` projections.users2.change_date,` + + ` projections.users2.resource_owner,` + + ` projections.users2.sequence,` + + ` projections.users2.state,` + + ` projections.users2.type,` + + ` projections.users2.username,` + + ` login_names.loginnames,` + + ` preferred_login_name.login_name,` + + ` projections.users2_humans.user_id,` + + ` projections.users2_humans.first_name,` + + ` projections.users2_humans.last_name,` + + ` projections.users2_humans.nick_name,` + + ` projections.users2_humans.display_name,` + + ` projections.users2_humans.preferred_language,` + + ` projections.users2_humans.gender,` + + ` projections.users2_humans.avatar_key,` + + ` projections.users2_humans.email,` + + ` projections.users2_humans.is_email_verified,` + + ` projections.users2_humans.phone,` + + ` projections.users2_humans.is_phone_verified,` + + ` projections.users2_machines.user_id,` + + ` projections.users2_machines.name,` + + ` projections.users2_machines.description,` + ` COUNT(*) OVER ()` + - ` FROM projections.users` + - ` LEFT JOIN projections.users_humans ON projections.users.id = projections.users_humans.user_id` + - ` LEFT JOIN projections.users_machines ON projections.users.id = projections.users_machines.user_id` + + ` FROM projections.users2` + + ` LEFT JOIN projections.users2_humans ON projections.users2.id = projections.users2_humans.user_id` + + ` LEFT JOIN projections.users2_machines ON projections.users2.id = projections.users2_machines.user_id` + ` LEFT JOIN` + ` (SELECT login_names.user_id, ARRAY_AGG(login_names.login_name) as loginnames` + ` FROM projections.login_names as login_names` + ` GROUP BY login_names.user_id) as login_names` + - ` on login_names.user_id = projections.users.id` + + ` on login_names.user_id = projections.users2.id` + ` LEFT JOIN` + ` (SELECT preferred_login_name.user_id, preferred_login_name.login_name FROM projections.login_names as preferred_login_name WHERE preferred_login_name.is_primary = $1) as preferred_login_name` + - ` on preferred_login_name.user_id = projections.users.id` + ` on preferred_login_name.user_id = projections.users2.id` usersCols = []string{ "id", "creation_date", @@ -760,6 +823,155 @@ func Test_UserPrepares(t *testing.T) { }, object: nil, }, + { + name: "prepareNotifyUserQuery no result", + prepare: func() (sq.SelectBuilder, func(*sql.Row) (*NotifyUser, error)) { + return prepareNotifyUserQuery("instanceID") + }, + want: want{ + sqlExpectations: mockQuery( + regexp.QuoteMeta(notifyUserQuery), + nil, + nil, + ), + err: func(err error) (error, bool) { + if !errs.IsNotFound(err) { + return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false + } + return nil, true + }, + }, + object: (*NotifyUser)(nil), + }, + { + name: "prepareNotifyUserQuery notify found", + prepare: func() (sq.SelectBuilder, func(*sql.Row) (*NotifyUser, error)) { + return prepareNotifyUserQuery("instanceID") + }, + want: want{ + sqlExpectations: mockQuery( + regexp.QuoteMeta(notifyUserQuery), + notifyUserCols, + []driver.Value{ + "id", + testNow, + testNow, + "resource_owner", + uint64(20211108), + domain.UserStateActive, + domain.UserTypeHuman, + "username", + pq.StringArray{"login_name1", "login_name2"}, + "login_name1", + //human + "id", + "first_name", + "last_name", + "nick_name", + "display_name", + "de", + domain.GenderUnspecified, + "avatar_key", + //notify + "id", + "lastEmail", + "verifiedEmail", + "lastPhone", + "verifiedPhone", + true, + }, + ), + }, + object: &NotifyUser{ + ID: "id", + CreationDate: testNow, + ChangeDate: testNow, + ResourceOwner: "resource_owner", + Sequence: 20211108, + State: domain.UserStateActive, + Type: domain.UserTypeHuman, + Username: "username", + LoginNames: []string{"login_name1", "login_name2"}, + PreferredLoginName: "login_name1", + FirstName: "first_name", + LastName: "last_name", + NickName: "nick_name", + DisplayName: "display_name", + AvatarKey: "avatar_key", + PreferredLanguage: language.German, + Gender: domain.GenderUnspecified, + LastEmail: "lastEmail", + VerifiedEmail: "verifiedEmail", + LastPhone: "lastPhone", + VerifiedPhone: "verifiedPhone", + PasswordSet: true, + }, + }, + { + name: "prepareNotifyUserQuery not notify found (error)", + prepare: func() (sq.SelectBuilder, func(*sql.Row) (*NotifyUser, error)) { + return prepareNotifyUserQuery("instanceID") + }, + want: want{ + sqlExpectations: mockQuery( + regexp.QuoteMeta(notifyUserQuery), + notifyUserCols, + []driver.Value{ + "id", + testNow, + testNow, + "resource_owner", + uint64(20211108), + domain.UserStateActive, + domain.UserTypeHuman, + "username", + pq.StringArray{"login_name1", "login_name2"}, + "login_name1", + //human + "id", + "first_name", + "last_name", + "nick_name", + "display_name", + "de", + domain.GenderUnspecified, + "avatar_key", + nil, + nil, + nil, + nil, + nil, + nil, + }, + ), + err: func(err error) (error, bool) { + if !errs.IsPreconditionFailed(err) { + return fmt.Errorf("err should be zitadel.PredconditionError got: %w", err), false + } + return nil, true + }, + }, + object: (*NotifyUser)(nil), + }, + { + name: "prepareNotifyUserQuery sql err", + prepare: func() (sq.SelectBuilder, func(*sql.Row) (*NotifyUser, error)) { + return prepareNotifyUserQuery("instanceID") + }, + want: want{ + sqlExpectations: mockQueryErr( + regexp.QuoteMeta(notifyUserQuery), + sql.ErrConnDone, + ), + err: func(err error) (error, bool) { + if !errors.Is(err, sql.ErrConnDone) { + return fmt.Errorf("err should be sql.ErrConnDone got: %w", err), false + } + return nil, true + }, + }, + object: nil, + }, { name: "prepareUsersQuery no result", prepare: prepareUsersQuery, From 3267daedda4febac7903edaa4c4b1408bbbd61b2 Mon Sep 17 00:00:00 2001 From: mffap Date: Wed, 6 Jul 2022 15:40:11 +0200 Subject: [PATCH 03/17] feat: internationalization french (#3890) * initial * console_fr updates * console_en fix issues * notifications_fr * internal_static_i18n_fr fixes * internal_static_i18n_en fix * docs * search parameter * missing italian translations Co-authored-by: Max Peintner Co-authored-by: Fabi <38692350+hifabienne@users.noreply.github.com> --- console/src/assets/i18n/en.json | 12 +- console/src/assets/i18n/fr.json | 1852 +++++++++++++++++++++ console/src/assets/i18n/it.json | 6 +- docs/docs/guides/customization/texts.md | 1 + internal/api/ui/login/static/i18n/fr.yaml | 372 +++++ internal/notification/static/i18n/fr.yaml | 42 + internal/static/i18n/en.yaml | 10 +- internal/static/i18n/fr.yaml | 928 +++++++++++ 8 files changed, 3209 insertions(+), 14 deletions(-) create mode 100644 console/src/assets/i18n/fr.json create mode 100644 internal/api/ui/login/static/i18n/fr.yaml create mode 100644 internal/notification/static/i18n/fr.yaml create mode 100644 internal/static/i18n/fr.yaml diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index 5860808cda5..da399ec73a8 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -22,11 +22,11 @@ "DISCLAIMERLINK": "Further information", "DOCUMENTATION": { "TITLE": "Documentation", - "DESCRIPTION": "Mit ZITADEL schnell durchstarten." + "DESCRIPTION": "Get started with ZITADEL quickly." }, "GETSTARTED": { "TITLE": "Get started with ZITADEL", - "DESCRIPTION": "Mit ZITADEL schnell durchstarten." + "DESCRIPTION": "Get started with ZITADEL quickly." }, "QUICKSTARTS": { "LABEL": "First Steps", @@ -154,7 +154,7 @@ "TEXT": "Here you can switch between your user accounts and manage your sessions and profile." }, "NAV": { - "TEXT": "This navigation changes based on your selected oranization above or your instance" + "TEXT": "This navigation changes based on your selected organization above or your instance" }, "CONTEXTCHANGED": { "TEXT": "Attention! The organization context has changed." @@ -227,7 +227,7 @@ "DETAIL": "Detail", "CREATE": "Create", "MY": "My Information", - "LOGINNAMES": "Loginnames", + "LOGINNAMES": "Login names", "LOGINNAMESDESC": "These are your login names:", "NOUSER": "No associated user.", "REACTIVATE": "Reactivate", @@ -927,7 +927,7 @@ "RESET": { "DEFAULTTITLE": "Reset Setting", "DEFAULTDESCRIPTION": "You are about to reset your settings to the default configuration of your instance. Are you sure you want to continue?", - "LOGINPOLICY_DESCRIPTION": "Warning: If your continue, Identiy Provider settings will be reset to the instance setting too." + "LOGINPOLICY_DESCRIPTION": "Warning: If your continue, Identity Provider settings will be reset to the instance setting too." } } }, @@ -1471,7 +1471,7 @@ "SCOPESLIST": "Scopes List", "CLIENTID": "Client ID", "CLIENTSECRET": "Client Secret", - "IDPDISPLAYNAMMAPPING": "IDP Anzeigename Mapping", + "IDPDISPLAYNAMMAPPING": "IDP Display Name Mapping", "USERNAMEMAPPING": "Username Mapping", "DATES": "Dates", "CREATIONDATE": "Created At", diff --git a/console/src/assets/i18n/fr.json b/console/src/assets/i18n/fr.json new file mode 100644 index 00000000000..eaf75d891bf --- /dev/null +++ b/console/src/assets/i18n/fr.json @@ -0,0 +1,1852 @@ +{ + "APP_NAME": "ZITADEL", + "PAGINATOR": { + "PREVIOUS": "Précédent", + "NEXT": "Suivant", + "COUNT": "Résultats totaux" + }, + "FOOTER": { + "LINKS": { + "CONTACT": "Contact", + "TOS": "Conditions d'utilisation", + "PP": "Politique de confidentialité" + }, + "THEME": { + "DARK": "Sombre", + "LIGHT": "Clair" + } + }, + "HOME": { + "WELCOME": "Commencez avec ZITADEL", + "DISCLAIMER": "ZITADEL traite vos données de manière confidentielle et sécurisée.", + "DISCLAIMERLINK": "Plus d'informations", + "DOCUMENTATION": { + "TITLE": "Documentation", + "DESCRIPTION": "Pour un démarrage rapide de ZITADEL." + }, + "GETSTARTED": { + "TITLE": "Démarrer avec ZITADEL", + "DESCRIPTION": "Pour un démarrage rapide de ZITADEL." + }, + "QUICKSTARTS": { + "LABEL": "Premiers pas", + "TITLE": "Démarrages rapides", + "DESCRIPTION": "Démarrez rapidement avec ZITADEL." + }, + "SHORTCUTS": { + "SHORTCUTS": "Raccourcis", + "SETTINGS": "Raccourcis disponibles", + "PROJECTS": "Projets", + "REORDER": "Maintenir et faire glisser la tuile pour la déplacer", + "ADD": "Maintenir et faire glisser une tuile pour ajouter" + } + }, + "MENU": { + "INSTANCE": "Instance", + "DASHBOARD": "Accueil", + "PERSONAL_INFO": "Informations personnelles", + "DOCUMENTATION": "Documentation", + "INSTANCEOVERVIEW": "Instance", + "ORGS": "Organisations", + "VIEWS": "Vues", + "FAILEDEVENTS": "Événements échoués", + "ORGANIZATION": "Organisation", + "DOMAINS": "Domaines", + "PROJECT": "Projets", + "PROJECTOVERVIEW": "Vue d'ensemble", + "PROJECTGRANTS": "Subventions", + "ROLES": "Rôles", + "GRANTEDPROJECT": "Projets accordés", + "HUMANUSERS": "Utilisateurs", + "MACHINEUSERS": "Utilisateurs de services", + "LOGOUT": "Déconnexion de tous les utilisateurs", + "NEWORG": "Nouvelle organisation", + "IAMADMIN": "Vous êtes un administrateur IAM. Notez que vous disposez de permissions étendues.", + "SHOWORGS": "Afficher toutes les organisations", + "GRANTS": "Autorisations", + "ACTIONS": "Actions", + "PRIVACY": "Vie privée", + "TOS": "Conditions de service", + "OPENSHORTCUTSTOOLTIP": "Tapez ? pour afficher les raccourcis clavier", + "SETTINGS": "Paramètres" + }, + "ACTIONS": { + "ACTIONS": "Actions", + "FILTER": "Filtrer", + "RENAME": "Renommer", + "SET": "Définir", + "COPY": "Copier dans le presse-papiers", + "COPIED": "Copié dans le presse-papiers.", + "RESET": "Réinitialiser", + "RESETDEFAULT": "Réinitialiser par défaut", + "RESETTO": "Réinitialiser à", + "RESETCURRENT": "Réinitialiser à la valeur actuelle", + "SHOW": "Afficher", + "HIDE": "Cacher", + "SAVE": "Sauvegarder", + "SAVENOW": "Sauvegarder maintenant", + "NEW": "Nouveau", + "ADD": "Ajouter", + "CREATE": "Créer", + "CONTINUE": "Continuer", + "BACK": "Retour", + "CLOSE": "Fermer", + "CLEAR": "Effacer", + "CANCEL": "Annuler", + "INFO": "Info", + "OK": "OK", + "SELECT": "Sélectionnez", + "VIEW": "Afficher", + "SELECTIONDELETE": "Supprimer la sélection", + "DELETE": "Supprimer", + "REMOVE": "Supprimer", + "VERIFY": "Vérifier", + "FINISH": "Terminer", + "FINISHED": "Fermer", + "CHANGE": "Modifier", + "REACTIVATE": "Réactiver", + "DEACTIVATE": "Désactiver", + "REFRESH": "Rafraîchir", + "LOGIN": "Connexion", + "EDIT": "Modifier", + "PIN": "Pin / Unpin", + "CONFIGURE": "Configurer", + "SEND": "Envoyer", + "NEWVALUE": "Nouvelle valeur", + "RESTORE": "Restaurer", + "CONTINUEWITHOUTSAVE": "Continuer sans sauvegarder", + "OF": "de", + "PREVIOUS": "Précédent", + "NEXT": "Suivant", + "MORE": "plus", + "STEP": "Étape", + "TABLE": { + "SHOWUSER": "Afficher l'utilisateur{{value}}" + } + }, + "MEMBERROLES": { + "IAM_OWNER": "A le contrôle de toute l'instance, y compris toutes les organisations", + "IAM_OWNER_VIEWER": "A le droit de passer en revue l'ensemble de l'instance, y compris toutes les organisations.", + "IAM_ORG_MANAGER": "A le droit de créer et de gérer des organisations", + "IAM_USER_MANAGER": "A le droit de créer et de gérer les utilisateurs", + "ORG_OWNER": "A le droit de contrôler l'ensemble de l'organisation", + "ORG_USER_MANAGER": "A le droit de créer et de gérer les utilisateurs de l'organisation", + "ORG_OWNER_VIEWER": "A le droit de passer en revue l'ensemble de l'organisation", + "ORG_USER_PERMISSION_EDITOR": "A le droit de gérer les subventions aux utilisateurs", + "ORG_PROJECT_PERMISSION_EDITOR": "A le droit de gérer les subventions aux projets", + "ORG_PROJECT_CREATOR": "A le droit de créer ses propres projets et leurs paramètres sous-jacents.", + "PROJECT_OWNER": "A le droit de gérer l'ensemble du projet", + "PROJECT_OWNER_VIEWER": "A le droit de passer en revue l'ensemble du projet", + "PROJECT_OWNER_GLOBAL": "A le droit d'accéder à l'ensemble du projet", + "PROJECT_OWNER_VIEWER_GLOBAL": "A le droit de réviser l'ensemble du projet", + "PROJECT_GRANT_OWNER": "A le droit de gérer la subvention du projet", + "PROJECT_GRANT_OWNER_VIEWER": "A le droit de réviser la subvention du projet" + }, + "OVERLAYS": { + "ORGSWITCHER": { + "TEXT": "Tous les paramètres d'organisation et les tableaux de la console sont basés sur l'organisation sélectionnée. Cliquez sur ce bouton pour changer d'organisation ou en créer une nouvelle." + }, + "INSTANCE": { + "TEXT": "Cliquez ici pour accéder aux paramètres de l'instance. Notez que vous n'avez accès à ce bouton que si vous disposez de permissions étendues." + }, + "PROFILE": { + "TEXT": "Ici, vous pouvez passer d'un compte utilisateur à l'autre et gérer vos sessions et votre profil." + }, + "NAV": { + "TEXT": "Cette navigation change en fonction de l'organisation sélectionnée ci-dessus ou de votre instance." + }, + "CONTEXTCHANGED": { + "TEXT": "Attention ! Le contexte de l'organisation a changé." + } + }, + "FILTER": { + "TITLE": "Filtre", + "STATE": "Statut", + "DISPLAYNAME": "Nom d'affichage de l'utilisateur", + "EMAIL": "Courriel", + "USERNAME": "Nom de l'utilisateur", + "ORGNAME": "Nom de l'organisation", + "PROJECTNAME": "Nom du projet", + "RESOURCEOWNER": "Propriétaire des ressources", + "METHODS": { + "5": "contient", + "7": "se termine par", + "1": "est égal à" + } + }, + "KEYBOARDSHORTCUTS": { + "TITLE": "Raccourcis clavier", + "UNDERORGCONTEXT": "Dans les pages de l'organisation", + "SIDEWIDE": "Raccourcis pour l'ensemble du site", + "SHORTCUTS": { + "HOME": "Aller à Accueil", + "SYSTEM": "Aller à Système", + "ORG": "Aller à Organisation", + "ORGSWITCHER": "Modifier l'organisation", + "ME": "Aller à son propre profil", + "PROJECTS": "Aller à Projets", + "USERS": "Aller à Utilisateurs", + "USERGRANTS": "Aller àAutorisations", + "ACTIONS": "Aller à Actions et Flux", + "DOMAINS": "Aller à Domaines" + } + }, + "RESOURCEID": "Id de la ressource", + "TABLE": { + "NOROWS": "Pas de données" + }, + "ERRORS": { + "REQUIRED": "Certains champs obligatoires sont manquants.", + "TOKENINVALID": { + "TITLE": "Votre jeton d'autorisation a expiré.", + "DESCRIPTION": "Cliquez sur le bouton ci-dessous pour vous reconnecter." + } + }, + "USER": { + "SETTINGS": { + "TITLE": "Paramètres", + "GENERAL": "Général", + "IDP": "Fournisseurs d'identité", + "MFA": "Authentification multifactorielle", + "KEYS": "Clés", + "PAT": "Jetons d'accès personnels", + "PASSWORDLESS": "Sans mot de passe", + "USERGRANTS": "Autorisations", + "MEMBERSHIPS": "Adhésions", + "METADATA": "Métadonnées" + }, + "TITLE": "Informations personnelles", + "DESCRIPTION": "Gérez vos informations et vos paramètres de sécurité.", + "PAGES": { + "LIST": "Utilisateurs", + "TITLE": "Utilisateur", + "DESCRIPTION": "Créer de nouveaux utilisateurs dans votre organisation et gérer les utilisateurs existants.", + "LISTMACHINE": "Service Users", + "DESCRIPTIONMACHINE": "Créez et gérez les Service Users de votre organisation", + "DETAIL": "Détail", + "CREATE": "Créer", + "MY": "Mes informations", + "LOGINNAMES": "Noms de connexion", + "LOGINNAMESDESC": "Ce sont vos noms de connexion", + "NOUSER": "Aucun utilisateur associé.", + "REACTIVATE": "Réactiver", + "DEACTIVATE": "Désactiver", + "FILTER": "Filtre", + "STATE": "Statut", + "DELETE": "Supprimer l'utilisateur", + "UNLOCK": "Déverrouiller l'utilisateur", + "LOCKEDDESCRIPTION": "Cet utilisateur a été verrouillé pour avoir dépassé le nombre maximum de tentatives de connexion et doit être déverrouillé pour être à nouveau utilisé.", + "DELETEACCOUNT": "Supprimer le compte", + "DELETEACCOUNT_DESC": "Si vous effectuez cette action, vous serez déconnecté et n'aurez plus accès à votre compte. Cette action n'est pas réversible, veuillez donc continuer avec prudence.", + "DELETEACCOUNT_BTN": "Supprimer le compte", + "DELETEACCOUNT_SUCCESS": "Compte supprimé avec succès !" + }, + "DETAILS": { + "DATECREATED": "Créé", + "DATECHANGED": "Modifié" + }, + "DIALOG": { + "DELETE_TITLE": "Supprimer l'utilisateur", + "DELETE_SELF_TITLE": "Supprimer le compte", + "DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer définitivement un utilisateur. Êtes-vous sûr ?", + "DELETE_SELF_DESCRIPTION": "Vous êtes sur le point de supprimer définitivement votre compte personnel. Cela vous déconnectera et supprimera votre utilisateur. Cette action ne peut être annulée !", + "DELETE_AUTH_DESCRIPTION": "Vous êtes sur le point de supprimer définitivement votre compte personnel. En êtes-vous sûr ?", + "TYPEUSERNAME": "Tapez '{{value}}', pour confirmer et supprimer l'utilisateur.", + "DELETE_BTN": "Supprimer définitivement" + }, + "SENDEMAILDIALOG": { + "TITLE": "Envoyer une notification par e-mail", + "DESCRIPTION": "Cliquez sur le bouton ci-dessous pour envoyer une notification à l'adresse e-mail actuelle ou modifier l'adresse e-mail dans le champ.", + "NEWEMAIL": "Nouvelle adresse e-mail" + }, + "TABLE": { + "DEACTIVATE": "Désactiver", + "ACTIVATE": "Activer", + "CHANGEDATE": "Dernière modification", + "CREATIONDATE": "Créé à", + "TYPES": { + "HUMAN": "Utilisateurs", + "MACHINE": "Utilisateurs du service" + }, + "FILTER": { + "0": "Filtre pour DisplayName", + "1": "Filtre sur le nom d'utilisateur", + "2": "filtre pour DisplayName", + "3": "filtre pour Username", + "4": "filtre pour Email", + "5": "filtre pour DisplayName", + "10": "filtre pour le nom de l'organisation", + "12": "filtre pour le nom du projet" + }, + "EMPTY": "Aucune entrée" + }, + "PASSWORDLESS": { + "SEND": "Envoyer le lien d'enregistrement", + "TABLETYPE": "Type", + "TABLESTATE": "Statut", + "NAME": "Nom", + "EMPTY": "Aucun dispositif défini", + "TITLE": "Authentification sans mot de passe", + "DESCRIPTION": "Ajoutez des méthodes d'authentification basées sur WebAuthn pour vous connecter à ZITADEL sans mot de passe.", + "MANAGE_DESCRIPTION": "Gérez les méthodes de second facteur de vos utilisateurs.", + "U2F": "Ajouter un authentifiant", + "U2F_DIALOG_TITLE": "Vérifier l'authentifiant", + "U2F_DIALOG_DESCRIPTION": "Entrez un nom pour votre connexion sans mot de passe utilisée", + "U2F_SUCCESS": "Auth sans mot de passe créé avec succès !", + "U2F_ERROR": "Une erreur s'est produite pendant la configuration !", + "U2F_NAME": "Nom de l'authentificateur", + "TYPE": { + "0": "Pas de MFA défini", + "1": "Mot de passe à usage unique (OTP)", + "2": "Empreinte digitale, clés de sécurité, Face ID et autres" + }, + "STATE": { + "0": "Pas d'état", + "1": "Pas prêt", + "2": "Prêt", + "3": "Supprimé" + }, + "DIALOG": { + "DELETE_TITLE": "Supprimer une méthode d'authentification sans mot de passe", + "DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer une méthode d'authentification sans mot de passe. Vous êtes sûr ?", + "ADD_TITLE": "Authentification sans mot de passe", + "ADD_DESCRIPTION": "Sélectionnez l'une des options disponibles pour créer une méthode d'authentification sans mot de passe.", + "SEND_DESCRIPTION": "Envoyez vous-même un lien d'enregistrement à votre adresse électronique.", + "SEND": "Envoyer le lien d'enregistrement", + "SENT": "L'email a été délivré avec succès. Vérifiez votre boîte aux lettres électronique pour poursuivre la configuration.", + "QRCODE_DESCRIPTION": "Générer un code QR à scanner avec un autre appareil.", + "QRCODE": "Générer un code QR", + "QRCODE_SCAN": "Scannez ce code QR pour poursuivre la configuration sur votre appareil.", + "NEW_DESCRIPTION": "Utilisez cet appareil pour configurer Passwordless.", + "NEW": "Ajouter un nouveau" + } + }, + "METADATA": { + "TITLE": "Métadonnées", + "DESCRIPTION": "", + "KEY": "Clé", + "VALUE": "Valeur", + "ADD": "Nouvelle entrée", + "SAVE": "Enregistrer", + "EMPTY": "Pas de métadonnées", + "SETSUCCESS": "Élément sauvegardé avec succès", + "REMOVESUCCESS": "Élément supprimé avec succès" + }, + "MFA": { + "TABLETYPE": "Type", + "TABLESTATE": "Statut", + "NAME": "Nom", + "EMPTY": "Aucun facteur supplémentaire", + "TITLE": "Authentification multifactorielle", + "DESCRIPTION": "Ajoutez un second facteur pour garantir une sécurité optimale de votre compte.", + "MANAGE_DESCRIPTION": "Gérez les méthodes de second facteur de vos utilisateurs.", + "ADD": "Ajouter un facteur", + "OTP": "OTP (mot de passe à usage unique)", + "OTP_DIALOG_TITLE": "Ajouter un OTP", + "OTP_DIALOG_DESCRIPTION": "Scannez le code QR avec une application d'authentification et saisissez le code ci-dessous pour vérifier et activer la méthode OTP.", + "U2F": "Empreinte digitale, clés de sécurité, Face ID et autres", + "U2F_DIALOG_TITLE": "Vérifier le facteur", + "U2F_DIALOG_DESCRIPTION": "Entrez un nom pour votre multifacteur universel utilisé.", + "U2F_SUCCESS": "Facteur ajouté avec succès !", + "U2F_ERROR": "Une erreur s'est produite pendant l'installation !", + "U2F_NAME": "Nom de l'authentificateur", + "TYPE": { + "0": "Pas de MFA défini", + "1": "Mot de passe à usage unique (OTP)", + "2": "Empreinte digitale, clés de sécurité, Face ID et autres" + }, + "STATE": { + "0": "Pas d'état", + "1": "Pas prêt", + "2": "Prêt", + "3": "Supprimé" + }, + "DIALOG": { + "MFA_DELETE_TITLE": "Supprimer le second facteur", + "MFA_DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer un second facteur. En êtes-vous sûr ?", + "ADD_MFA_TITLE": "Ajouter un second facteur", + "ADD_MFA_DESCRIPTION": "Sélectionnez l'une des options suivantes." + } + }, + "EXTERNALIDP": { + "TITLE": "Fournisseurs d'identité externes", + "DESC": "", + "IDPCONFIGID": "IDP Config ID", + "IDPNAME": "Nom IDP", + "USERDISPLAYNAME": "Nom externe", + "EXTERNALUSERID": "IDP externe", + "EMPTY": "Aucun IDP externe trouvé", + "DIALOG": { + "DELETE_TITLE": "Supprimer l'IDP", + "DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer un fournisseur d'identité d'un utilisateur. Voulez-vous vraiment continuer ?" + } + }, + "CREATE": { + "TITLE": "Créer un nouvel utilisateur", + "DESCRIPTION": "Veuillez fournir les informations nécessaires.", + "NAMEANDEMAILSECTION": "Nom et e-mail", + "GENDERLANGSECTION": "Sexe et langue", + "PHONESECTION": "Numéro de téléphone", + "PASSWORDSECTION": "Mot de passe initial", + "ADDRESSANDPHONESECTION": "Numéro de téléphone", + "INITMAILDESCRIPTION": "Si les deux options sont sélectionnées, aucun mail d'initialisation ne sera envoyé. Si une seule des options est sélectionnée, un mail pour fournir / vérifier les données sera envoyé." + }, + "CODEDIALOG": { + "TITLE": "Vérifier le numéro de téléphone", + "DESCRIPTION": "Entrez le code que vous avez reçu par SMS pour vérifier votre numéro de téléphone.", + "CODE": "Code" + }, + "DATA": { + "STATE": "Statut", + "STATE0": "Inconnu", + "STATE1": "Actif", + "STATE2": "Inactif", + "STATE3": "Supprimé", + "STATE4": "Verrouillé", + "STATE5": "Suspendu", + "STATE6": "Initial" + }, + "PROFILE": { + "TITLE": "Profil", + "EMAIL": "Courriel", + "PHONE": "Numéro de téléphone", + "USERNAME": "Nom de l'utilisateur", + "CHANGEUSERNAME": "modifier", + "CHANGEUSERNAME_TITLE": "Modifier le nom d'utilisateur", + "CHANGEUSERNAME_DESC": "Entrez le nouveau nom dans le champ ci-dessous.", + "FIRSTNAME": "Prénom", + "LASTNAME": "Nom de famille", + "NICKNAME": "Surnom", + "DISPLAYNAME": "Nom d'affichage", + "PREFERRED_LANGUAGE": "Langue", + "GENDER": "Sexe", + "PASSWORD": "Mot de passe", + "AVATAR": { + "UPLOADTITLE": "Téléchargez votre photo de profil", + "UPLOADBTN": "Choisir le fichier", + "UPLOAD": "Télécharger", + "CURRENT": "Photo actuelle", + "PREVIEW": "Prévisualiser", + "DELETESUCCESS": "Supprimé avec succès !", + "CROPPERERROR": "Une erreur s'est produite lors du téléchargement de votre fichier. Essayez un autre format et une autre taille si nécessaire." + } + }, + "MACHINE": { + "TITLE": "Détails de l'utilisateur du service", + "USERNAME": "Nom de l'utilisateur", + "NAME": "Nom", + "DESCRIPTION": "Description", + "KEYSTITLE": "Clés", + "KEYSDESC": "Définissez vos clés et ajoutez une date d'expiration facultative.", + "TOKENSTITLE": "Jetons d'accès personnels", + "TOKENSDESC": "Les jetons d'accès personnels fonctionnent comme des jetons d'accès OAuth ordinaires.", + "ID": "ID de la clé", + "TYPE": "Type", + "EXPIRATIONDATE": "Date d'expiration", + "CHOOSEDATEAFTER": "Entrez une date d'expiration valide après", + "CHOOSEEXPIRY": "Sélectionnez une date d'expiration", + "CREATIONDATE": "Date de création", + "KEYDETAILS": "Détails de la clé", + "ADD": { + "TITLE": "Ajouter une clé", + "DESCRIPTION": "Sélectionnez votre type de clé et choisissez une date d'expiration facultative." + }, + "ADDED": { + "TITLE": "La clé a été créée", + "DESCRIPTION": "Téléchargez la clé car elle ne sera plus visible après la fermeture de cette boîte de dialogue !" + }, + "KEYTYPES": { + "1": "JSON" + }, + "DIALOG": { + "DELETE_KEY": { + "TITLE": "Supprimer la clé", + "DESCRIPTION": "Voulez-vous supprimer la clé sélectionnée ? Cette opération ne peut être annulée." + } + } + }, + "PASSWORD": { + "TITLE": "Mot de passe", + "DESCRIPTION": "Saisissez le nouveau mot de passe conformément à la politique ci-dessous.", + "OLD": "Mot de passe actuel", + "NEW": "Nouveau mot de passe", + "CONFIRM": "Confirmer le nouveau mot de passe", + "NEWINITIAL": "Mot de passe", + "CONFIRMINITIAL": "Confirmer le mot de passe", + "RESET": "Réinitialiser le mot de passe actuel", + "SET": "Définir un nouveau mot de passe", + "RESENDNOTIFICATION": "Envoyer le lien de réinitialisation du mot de passe", + "REQUIRED": "Certains champs obligatoires sont manquants.", + "MINLENGTHERROR": "Le mot de passe doit comporter au moins{{value}} caractères.", + "NOTEQUAL": "Les mots de passe fournis ne correspondent pas." + }, + "ID": "ID", + "EMAIL": "E-mail", + "PHONE": "Numéro de téléphone", + "PHONEEMPTY": "Pas de numéro de téléphone défini", + "PHONEVERIFIED": "Numéro de téléphone vérifié.", + "EMAILVERIFIED": "Courriel vérifié", + "NOTVERIFIED": "non vérifié", + "PREFERRED_LOGINNAME": "Nom de connexion préféré", + "LOGINMETHODS": { + "TITLE": "Informations sur le contact", + "DESCRIPTION": "Les informations fournies sont utilisées pour vous envoyer des informations importantes, comme des e-mails de réinitialisation de mot de passe.", + "EMAIL": { + "TITLE": "Courriel", + "VALID": "validé", + "ISVERIFIED": "Courriel vérifié", + "ISVERIFIEDDESC": "Si l'e-mail est indiqué comme vérifié, aucune demande de vérification d'e-mail ne sera effectuée.", + "RESEND": "Renvoyer l'e-mail de vérification", + "EDITTITLE": "Modifier l'e-mail", + "EDITDESC": "Entrez le nouvel e-mail dans le champ ci-dessous." + }, + "PHONE": { + "TITLE": "Téléphone", + "VALID": "validé", + "RESEND": "Renvoyer le message texte de vérification", + "EDITTITLE": "Changer le numéro", + "EDITVALUE": "Numéro de téléphone", + "EDITDESC": "Entrez le nouveau numéro de téléphone dans le champ ci-dessous.", + "DELETETITLE": "Supprimer le numéro de téléphone", + "DELETEDESC": "Voulez-vous vraiment supprimer le numéro de téléphone ?" + }, + "RESENDCODE": "Renvoyer le code", + "ENTERCODE": "Vérifier", + "ENTERCODE_DESC": "Code de vérification" + }, + "GRANTS": { + "TITLE": "Attribution d'un utilisateur", + "DESCRIPTION": "Accorder à cet utilisateur l'accès à certains projets", + "CREATE": { + "TITLE": "Créer une autorisation d'utilisateur", + "DESCRIPTION": "Recherchez l'organisation, le projet et les rôles de projet correspondants." + }, + "PROJECTNAME": "Nom du projet", + "PROJECT-OWNED": "Projet", + "PROJECT-GRANTED": "Projet concédé", + "FILTER": { + "0": "filtre pour l'utilisateur", + "1": "filtre pour le domaine", + "2": "filtre pour le nom du projet", + "3": "filtre pour nom de rôle" + } + }, + "VALIDATION": { + "INVALIDPATTERN": "Le mot de passe ne répond pas aux règles définies.", + "NOTANEMAIL": "La valeur donnée n'est pas une adresse e-mail", + "REQUIRED": "Le champ de saisie est vide.", + "MINLENGTH": "Le mot de passe doit comporter au moins{{length}} caractères.", + "NOEMAIL": "Le nom d'utilisateur ne peut pas être une adresse électronique.", + "UPPERCASEMISSING": "Le mot de passe doit comporter un caractère majuscule.", + "LOWERCASEMISSING": "Le mot de passe doit inclure un caractère minuscule.", + "SYMBOLERROR": "Le mot de passe doit inclure un symbole ou un signe de ponctuation.", + "NUMBERERROR": "Le mot de passe doit contenir un chiffre." + }, + "STATE": { + "0": "Inconnu", + "1": "Actif", + "2": "Inactif", + "3": "Supprimé", + "4": "Verrouillé", + "5": "Suspendu", + "6": "Initial" + }, + "SEARCH": { + "ADDITIONAL": "Nom de connexion (organisation actuelle)", + "ADDITIONAL-EXTERNAL": "Nom de connexion (organisation externe)" + }, + "TARGET": { + "SELF": "Si vous souhaitez accorder une autorisation à un utilisateur d'une autre organisation", + "EXTERNAL": "Pour accorder un utilisateur de votre organisation", + "CLICKHERE": "cliquez ici" + }, + "SIGNEDOUT": "Vous êtes déconnecté. Cliquez sur le bouton \"Se connecter\" pour vous reconnecter.", + "SIGNEDOUT_BTN": "Se connecter", + "EDITACCOUNT": "Modifier le compte", + "ADDACCOUNT": "Se connecter avec un autre compte", + "RESENDINITIALEMAIL": "Envoyer un nouveau courrier d'initialisation", + "RESENDEMAILNOTIFICATION": "Renvoyer la notification par e-mail", + "TOAST": { + "CREATED": "Utilisateur créé avec succès.", + "SAVED": "Profil enregistré avec succès.", + "USERNAMECHANGED": "Nom d'utilisateur modifié.", + "EMAILSAVED": "E-mail enregistré avec succès.", + "INITEMAILSENT": "Initialisation du courrier envoyé.", + "PHONESAVED": "Téléphone enregistré avec succès.", + "PHONEREMOVED": "Le téléphone a été supprimé.", + "PHONEVERIFIED": "Téléphone vérifié avec succès.", + "PHONEVERIFICATIONSENT": "Code de vérification du téléphone envoyé.", + "EMAILVERIFICATIONSENT": "Code de vérification de l'e-mail envoyé.", + "OTPREMOVED": "OTP supprimé.", + "U2FREMOVED": "Facteur supprimé.", + "PASSWORDLESSREMOVED": "Sans mot de passe supprimé.", + "INITIALPASSWORDSET": "Mot de passe initial défini.", + "PASSWORDNOTIFICATIONSENT": "Notification de changement de mot de passe envoyée.", + "PASSWORDCHANGED": "Mot de passe modifié avec succès.", + "REACTIVATED": "Utilisateur réactivé.", + "DEACTIVATED": "Utilisateur désactivé.", + "SELECTEDREACTIVATED": "Utilisateurs sélectionnés réactivés.", + "SELECTEDDEACTIVATED": "Utilisateurs sélectionnés désactivés.", + "SELECTEDKEYSDELETED": "Clés sélectionnées supprimées.", + "KEYADDED": "Clé ajoutée !", + "MACHINEADDED": "Utilisateur de service créé !", + "DELETED": "Utilisateur supprimé avec succès !", + "UNLOCKED": "Utilisateur déverrouillé avec succès !", + "PASSWORDLESSREGISTRATIONSENT": "Lien d'enregistrement envoyé avec succès." + }, + "MEMBERSHIPS": { + "TITLE": "Rôles du gestionnaire ZITADEL", + "DESCRIPTION": "Il s'agit de toutes les attributions des membres de l'utilisateur. Vous pouvez les modifier également sur les pages de détails de l'organisation, du projet ou de l'IAM.", + "ORGCONTEXT": "Vous voyez toutes les organisations et tous les projets qui sont liés à l'organisation actuellement sélectionnée.", + "USERCONTEXT": "Vous voyez toutes les organisations et tous les projets auxquels vous êtes autorisé. Y compris les autres organisations.", + "CREATIONDATE": "Date de création", + "CHANGEDATE": "Dernière modification", + "DISPLAYNAME": "Nom d'affichage", + "REMOVE": "Supprimer", + "TYPE": "Type", + "ORGID": "ID de l'organisation", + "UPDATED": "L'adhésion a été mise à jour.", + "NOPERMISSIONTOEDIT": "Il vous manque les autorisations nécessaires pour modifier les rôles !", + "TYPES": { + "UNKNOWN": "Inconnu", + "ORG": "Organisation", + "PROJECT": "Projet", + "GRANTEDPROJECT": "Projet accordé" + } + }, + "PERSONALACCESSTOKEN": { + "ID": "ID", + "TOKEN": "Jeton", + "ADD": { + "TITLE": "Générer un nouveau jeton d'accès personnel", + "DESCRIPTION": "Définissez une expiration personnalisée pour le jeton.", + "CHOOSEEXPIRY": "Sélectionnez une date d'expiration", + "CHOOSEDATEAFTER": "Entrez une expiration valide après" + }, + "ADDED": { + "TITLE": "Jeton d'accès personnel", + "DESCRIPTION": "Veillez à copier votre jeton d'accès personnel. Vous ne pourrez plus le voir !" + }, + "DELETE": { + "TITLE": "Supprimer le jeton", + "DESCRIPTION": "Vous êtes sur le point de supprimer le jeton d'accès personnel. Vous êtes sûr ?" + }, + "DELETED": "Jeton supprimé avec succès." + } + }, + "FLOWS": { + "TITLE": "Actions et flux", + "DESCRIPTION": "Définissez des scripts à exécuter lors d'un certain événement.", + "ACTIONSTITLE": "Actions", + "ACTIONSDESCRIPTION": "Ce sont vos scripts que vous pouvez exécuter dans les flux.", + "FLOWSTITLE": "Flux", + "FLOWSDESCRIPTION": "Les flux d'un certain type exécutent des actions au moment d'un déclencheur.", + "ID": "ID", + "NAME": "Nom", + "STATE": "État", + "STATES": { + "0": "pas d'état", + "1": "inactif", + "2": "actif" + }, + "TYPES": { + "0": "Type non spécifié", + "1": "Authentification externe" + }, + "TRIGGERTYPES": { + "1": "Post Authentification", + "2": "Pré création", + "3": "Post création" + }, + "ADDTRIGGER": "Ajouter un déclencheur", + "TIMEOUT": "Délai d'attente", + "TIMEOUTINSEC": "Délai en secondes", + "ALLOWEDTOFAIL": "Autorisé à échouer", + "SCRIPT": "Script", + "FLOWTYPE": "Type de flux", + "TRIGGERTYPE": "Type de déclencheur", + "ACTIONS": "Actions", + "ACTIONSMAX": "En fonction de votre niveau, vous disposez d'un nombre limité d'actions ({{value}}). Veillez à désactiver celles dont vous n'avez pas besoin ou envisagez d'améliorer votre niveau.", + "DIALOG": { + "ADD": { + "TITLE": "Créer une action" + }, + "UPDATE": { + "TITLE": "Mettre à jour l'action" + }, + "DELETEACTION": { + "TITLE": "Supprimer une action ?", + "DESCRIPTION": "Vous êtes sur le point de supprimer une action. Cette action ne peut pas être annulée. Vous êtes sûr ?", + "DELETE_SUCCESS": "Action supprimée avec succès." + }, + "CLEAR": { + "TITLE": "Effacer le flux ?", + "DESCRIPTION": "Vous êtes sur le point de réinitialiser le flux ainsi que ses déclencheurs et actions. Ce changement ne peut pas être restauré. Etes-vous sûr ?" + } + }, + "TOAST": { + "ACTIONSSET": "Actions définies", + "ACTIONREACTIVATED": "Actions réactivées avec succès", + "ACTIONDEACTIVATED": "Actions désactivées avec succès" + } + }, + "IAM": { + "TITLE": "Instance", + "DESCRIPTION": "Gérez les paramètres de votre instance et les organisations", + "POLICIES": { + "TITLE": "Politiques et paramètres d'accès au système", + "DESCRIPTION": "Gérer vos politiques globales et vos paramètres d'accès à la gestion." + }, + "EVENTSTORE": { + "TITLE": "Administration du stockage IAM", + "DESCRIPTION": "Gérez vos vues ZITADEL et les événements échoués." + }, + "MEMBER": { + "TITLE": "Managers", + "DESCRIPTION": "Ces gestionnaires sont autorisés à effectuer des changements dans votre instance." + }, + "VIEWS": { + "TITLE": "Vues", + "DESCRIPTION": "Cette carte montre vos vues ZITADEL.", + "VIEWNAME": "Nom", + "DATABASE": "Base de données", + "SEQUENCE": "Séquence", + "EVENTTIMESTAMP": "Horodatage", + "LASTSPOOL": "Spool réussi", + "ACTIONS": "Actions", + "CLEAR": "Effacer", + "CLEARED": "La vue a été effacée avec succès !", + "DIALOG": { + "VIEW_CLEAR_TITLE": "Effacer la vue", + "VIEW_CLEAR_DESCRIPTION": "Vous êtes sur le point d'effacer une vue. L'effacement d'une vue crée un processus pendant lequel les données ne sont peut-être pas disponibles pour les utilisateurs finaux. Etes-vous vraiment sûr ?" + } + }, + "FAILEDEVENTS": { + "TITLE": "Événements échoués", + "DESCRIPTION": "Cette carte montre vos événements échoués.", + "VIEWNAME": "Nom", + "DATABASE": "Base de données", + "FAILEDSEQUENCE": "Séquence échouée", + "FAILURECOUNT": "Nombre d'échecs", + "ERRORMESSAGE": "Message d'erreur", + "ACTIONS": "Actions", + "DELETE": "Supprimer", + "DELETESUCCESS": "Événements échoués supprimés." + }, + "TOAST": { + "MEMBERREMOVED": "Gestionnaire supprimé.", + "MEMBERSADDED": "Gestionnaires ajoutés.", + "MEMBERADDED": "Gestionnaire ajouté.", + "MEMBERCHANGED": "Manager changé.", + "ROLEREMOVED": "Rôle supprimé.", + "ROLECHANGED": "Rôle modifié.", + "REACTIVATED": "Réactivé", + "DEACTIVATED": "Désactivé" + } + }, + "ORG": { + "PAGES": { + "NAME": "Nom", + "ID": "ID", + "CREATIONDATE": "Date de création", + "DATECHANGED": "Modifié", + "FILTER": "Filtre", + "FILTERPLACEHOLDER": "Filtre pour le nom", + "LIST": "Organisations", + "LISTDESCRIPTION": "Choisissez une organisation.", + "ACTIVE": "Actif", + "CREATE": "Créer une organisation", + "NOPERMISSION": "Vous n'avez pas la permission d'accéder aux paramètres de l'organisation.", + "USERSELFACCOUNT": "Utilisez votre compte personnel comme propriétaire de l'organisation", + "ORGDETAIL_TITLE": "Saisissez le nom et le domaine de votre nouvelle organisation.", + "ORGDETAIL_TITLE_WITHOUT_DOMAIN": "Saisissez le nom de votre nouvelle organisation.", + "ORGDETAILUSER_TITLE": "Configurer le propriétaire de l'organisation", + "ORGDOMAIN": { + "TITLE": "Vérification de la propriété du domaine de l'organisation", + "VERIFICATION": "Pour vérifier la propriété de votre domaine, vous devez télécharger un fichier de vérification et le charger à l'URL indiquée ci-dessous, ou placer une entrée DNS TXT Record pour l'URL indiquée. Pour terminer, cliquez sur le bouton de vérification.", + "VERIFICATION_SKIP": "Vous pouvez ignorer la vérification pour l'instant et continuer à créer votre organisation, mais cette étape doit être terminée pour pouvoir utiliser votre organisation !", + "VERIFICATION_VALIDATION_DESC": "Les jetons sont vérifiés régulièrement pour s'assurer que vous êtes toujours propriétaire du domaine.", + "VERIFICATION_NEWTOKEN_TITLE": "Demander un nouveau jeton", + "VERIFICATION_NEWTOKEN_DESC": "Si vous voulez demander un nouveau jeton, sélectionnez votre méthode préférée. Si vous voulez valider un jeton persistant, cliquez sur le bouton ci-dessus.", + "VERIFICATION_VALIDATION_ONGOING": "Un jeton de vérification a déjà été demandé. Cliquez sur le bouton pour déclencher un contrôle de vérification.", + "VERIFICATION_VALIDATION_ONGOING_TYPE": "Type de jeton", + "VERIFICATION_SUCCESSFUL": "Domaine vérifié avec succès !", + "REQUESTNEWTOKEN": "Demander un nouveau jeton", + "TYPES": { + "1": "HTTP", + "2": "DNS" + } + }, + "DOWNLOAD_FILE": "Télécharger le fichier", + "SELECTORGTOOLTIP": "Sélectionnez cette organisation.", + "PRIMARYDOMAIN": "Domaine primaire", + "STATE": "État", + "USEPASSWORD": "Définir le mot de passe initial", + "USEPASSWORDDESC": "L'utilisateur n'a pas à définir le mot de passe lors de l'initialisation." + }, + "LIST": { + "TITLE": "Organisations", + "DESCRIPTION": "Ce sont les organisations de votre instance" + }, + "DOMAINS": { + "NEW": "Ajouter un domaine", + "TITLE": "Domaines", + "DESCRIPTION": "Configurez vos domaines. Ce domaine peut être utilisé pour se connecter avec vos utilisateurs.", + "SETPRIMARY": "Définir comme primaire", + "DELETE": { + "TITLE": "Supprimer un domaine", + "DESCRIPTION": "Vous êtes sur le point de supprimer l'un de vos domaines. Notez que vos utilisateurs ne peuvent plus utiliser ce domaine pour leur connexion." + }, + "ADD": { + "TITLE": "Ajouter un domaine", + "DESCRIPTION": "Vous êtes sur le point d'ajouter un domaine pour votre organisation. Une fois le processus réussi, vos utilisateurs pourront utiliser le domaine pour leur connexion." + } + }, + "STATE": { + "0": "Non défini", + "1": "Actif", + "2": "Désactivé" + }, + "MEMBER": { + "TITLE": "Gestionnaires de l'organisation", + "DESCRIPTION": "Définissez les utilisateurs qui peuvent modifier les préférences de votre organisation." + }, + "TOAST": { + "DEACTIVATED": "Organisation désactivée.", + "REACTIVATED": "Organisation réactivée.", + "DOMAINADDED": "Domaine ajouté.", + "DOMAINREMOVED": "Domaine supprimé.", + "MEMBERADDED": "Gestionnaire ajouté.", + "MEMBERREMOVED": "Gestionnaire supprimé.", + "MEMBERCHANGED": "Gestionnaire modifié.", + "SETPRIMARY": "Domaine primaire défini." + } + }, + "SETTINGS": { + "INSTANCE": { + "TITLE": "Paramètres de l'instance", + "DESCRIPTION": "Ces paramètres s'appliqueront à toutes vos organisations, sauf s'ils ont été remplacés." + }, + "ORG": { + "TITLE": "Paramètres de l'organisation", + "DESCRIPTION": "Ces paramètres étendent et remplacent les paramètres de votre instance." + }, + "LIST": { + "GENERAL": "Général", + "LOGIN": "Comportement de connexion et sécurité", + "LOCKOUT": "Verrouillage", + "COMPLEXITY": "Complexité du mot de passe", + "NOTIFICATIONS": "Fournisseurs de notifications et SMTP", + "NOTIFICATIONS_DESC": "Paramètres SMTP et SMS", + "MESSAGETEXTS": "Textes des messages", + "IDP": "Fournisseurs d'identité", + "DOMAIN": "Paramètres du domaine", + "LOGINTEXTS": "Textes de l'interface de connexion", + "BRANDING": "Image de marque", + "PRIVACYPOLICY": "Politique de confidentialité", + "OIDC": "Durée de vie et expiration des jetons OIDC", + "SECRETS": "Apparence secrète" + }, + "GROUPS": { + "NOTIFICATIONS": "Notifications", + "LOGIN": "Connexion et accès", + "DOMAIN": "Domaine", + "TEXTS": "Textes et langues", + "APPEARANCE": "Apparence", + "OTHER": "Autres" + } + }, + "SETTING": { + "DEFAULTLANGUAGE": "Langue par défaut", + "LANGUAGE": { + "de": "Deutsch", + "it": "Italiano", + "en": "English" + }, + "SMTP": { + "TITLE": "Paramètres SMTP", + "SENDERADDRESS": "Adresse e-mail de l'expéditeur", + "SENDERNAME": "Nom de l'expéditeur", + "HOST": "Hôte", + "USER": "Utilisateur", + "PASSWORD": "Mot de passe", + "SETPASSWORD": "Définir le mot de passe SMTP", + "PASSWORDSET": "Le mot de passe SMTP a été défini avec succès.", + "TLS": "Sécurité de la couche de transport (TLS)", + "SAVED": "Enregistré avec succès !", + "REQUIREDWARN": "Pour envoyer des notifications depuis votre domaine, vous devez entrer vos données SMTP." + }, + "SMS": { + "TITLE": "Paramètres SMS", + "PROVIDERS": "Fournisseurs", + "PROVIDER": "Fournisseur de SMS", + "ADDPROVIDER": "Ajouter un fournisseur de SMS", + "ADDPROVIDERDESCRIPTION": "Choisissez l'un des fournisseurs disponibles et saisissez les données requises.", + "TWILIO": { + "SID": "Sid", + "TOKEN": "Jeton", + "SENDERNUMBER": "Numéro d'expéditeur", + "ADDED": "Twilio a été ajouté avec succès.", + "CHANGETOKEN": "Changer de Token", + "SETTOKEN": "Définir le jeton", + "TOKENSET": "Le jeton a été défini avec succès." + } + }, + "OIDC": { + "TITLE": "Paramètres OIDC", + "ACCESSTOKENLIFETIME": "Durée de vie du jeton d'accès", + "IDTOKENLIFETIME": "Durée de vie du jeton d'identité", + "REFRESHTOKENEXPIRATION": "Rafraîchir l'expiration du jeton", + "REFRESHTOKENIDLEEXPIRATION": "Rafraîchissement de l'expiration de la période d'inactivité du jeton", + "INHOURS": "heures", + "INDAYS": "Jours" + }, + "SECRETS": { + "TITLE": "Apparence du secret", + "TYPES": "Types de secret", + "TYPE": { + "1": "Courrier d'initialisation", + "2": "Vérification du courrier électronique", + "3": "Vérification par téléphone", + "4": "Réinitialisation du mot de passe", + "5": "Initialisation sans mot de passe", + "6": "Secret de l'application" + }, + "ADDGENERATOR": "Définir l'apparence du secret", + "GENERATORTYPE": "Type", + "EXPIRY": "Expiration (en heures)", + "INCLUDEDIGITS": "Inclure les chiffres", + "INCLUDESYMBOLS": "Inclure les symboles", + "INCLUDELOWERLETTERS": "Inclure les lettres minuscules", + "INCLUDEUPPERLETTERS": "Inclure les lettres majuscules", + "LENGTH": "Longueur", + "UPDATED": "Paramètres mis à jour." + }, + "DIALOG": { + "RESET": { + "DEFAULTTITLE": "Réinitialiser les paramètres", + "DEFAULTDESCRIPTION": "Vous êtes sur le point de réinitialiser vos paramètres à la configuration par défaut de votre instance. Êtes-vous sûr de vouloir continuer ?", + "LOGINPOLICY_DESCRIPTION": "Avertissement" + } + } + }, + "POLICY": { + "TITLE": "Explorer les paramètres", + "DESCRIPTION": "Paramètres préemballés qui renforcent votre sécurité.", + "APPLIEDTO": "Appliqué à", + "PWD_COMPLEXITY": { + "TITLE": "Complexité des mots de passe", + "DESCRIPTION": "Assure que tous les mots de passe définis correspondent à un modèle spécifique.", + "SYMBOLANDNUMBERERROR": "Le mot de passe doit être composé d'un chiffre et d'un symbole/une marque de ponctuation.", + "SYMBOLERROR": "Le mot de passe doit comprendre un symbole ou un signe de ponctuation.", + "NUMBERERROR": "Le mot de passe doit comprendre un chiffre.", + "PATTERNERROR": "Le mot de passe ne correspond pas au modèle requis." + }, + "PRIVATELABELING": { + "TITLE": "Image de marque", + "DESCRIPTION": "Donnez au login votre style personnalisé et modifiez son comportement.", + "PREVIEW_DESCRIPTION": "Les modifications de la politique seront automatiquement déployées dans l'environnement de prévisualisation.", + "BTN": "Sélectionner le fichier", + "ACTIVATEPREVIEW": "Appliquer la configuration", + "DARK": "Mode foncé", + "LIGHT": "Mode clair", + "CHANGEVIEW": "Modifier la vue", + "ACTIVATED": "Les changements de politique sont maintenant LIVE", + "THEME": "Thème", + "COLORS": "Couleurs", + "FONT": "Police de caractères", + "ADVANCEDBEHAVIOR": "Comportement avancé", + "DROP": "Déposer une image ici ou", + "RELEASE": "Communiqué", + "DROPFONT": "Déposer le fichier de la police ici", + "RELEASEFONT": "Release", + "USEOFLOGO": "Votre logo sera utilisé dans la connexion ainsi que dans les courriels, tandis que l'icône est utilisée pour les petits éléments de l'interface utilisateur, comme le sélecteur d'organisation dans la console.", + "MAXSIZE": "La taille maximale est limitée à 524 Ko.", + "EMAILNOSVG": "Le format de fichier SVG n'est pas supporté dans les emails. Téléchargez donc votre logo en PNG ou dans un autre format pris en charge.", + "MAXSIZEEXCEEDED": "La taille maximale de 524kB est dépassée.", + "FONTINLOGINONLY": "La police n'est actuellement affichée que dans l'interface de connexion.", + "VIEWS": { + "PREVIEW": "Aperçu", + "CURRENT": "Configuration actuelle" + }, + "PREVIEW": { + "TITLE": "Connexion", + "SECOND": "Connectez-vous avec votre compte ZITADEL.", + "ERROR": "L'utilisateur n'a pas pu être trouvé !", + "PRIMARYBUTTON": "suivant", + "SECONDARYBUTTON": "enregistrez-vous" + } + }, + "PWD_AGE": { + "TITLE": "Vieillissement des mots de passe", + "DESCRIPTION": "Vous pouvez définir une politique pour le vieillissement des mots de passe. Cette politique émet un avertissement après que le temps de vieillissement spécifique se soit écoulé." + }, + "PWD_LOCKOUT": { + "TITLE": "Politique de verrouillage", + "DESCRIPTION": "Définissez un nombre maximum de tentatives de saisie du mot de passe, après quoi les comptes seront bloqués." + }, + "DOMAIN_POLICY": { + "TITLE": "Paramètres du domaine" + }, + "PRIVATELABELING_POLICY": { + "TITLE": "Image de marque", + "BTN": "Sélectionner le fichier", + "DESCRIPTION": "Personnaliser l'apparence de la connexion", + "ACTIVATEPREVIEW": "Activer la configuration" + }, + "LOGIN_POLICY": { + "TITLE": "Paramètres de connexion", + "DESCRIPTION": "Définir la manière dont les utilisateurs peuvent être authentifiés et configurer les fournisseurs d'identité.", + "DESCRIPTIONCREATEADMIN": "Les utilisateurs peuvent choisir parmi les fournisseurs d'identité disponibles ci-dessous.", + "DESCRIPTIONCREATEMGMT": "Les utilisateurs peuvent choisir parmi les fournisseurs d'identité disponibles ci-dessous. Note", + "ADVANCED": "Avancé", + "LIFETIMEDURATIONS": "Durée de vie des connexions", + "SAVED": "Enregistré avec succès !" + }, + "PRIVACY_POLICY": { + "TITLE": "Politique de confidentialité et CGS", + "DESCRIPTION": "Définissez vos liens vers la politique de confidentialité et les conditions de service", + "TOSLINK": "Lien vers les conditions d'utilisation", + "POLICYLINK": "Lien vers la politique de confidentialité", + "HELPLINK": "Lien vers l'aide", + "SAVED": "Enregistré avec succès !", + "RESET_TITLE": "Restaurer les valeurs par défaut", + "RESET_DESCRIPTION": "Vous êtes sur le point de restaurer les liens par défaut pour les CGS et la politique de confidentialité. Voulez-vous vraiment continuer ?" + }, + "LOGIN_TEXTS": { + "TITLE": "Textes des interfaces de connexion", + "DESCRIPTION": "Définissez vos textes pour les interfaces de connexion. Si les textes sont vides, la valeur par défaut affichée dans l'espace réservé sera utilisée.", + "DESCRIPTION_SHORT": "Définissez vos textes pour les interfaces de connexion.", + "NEWERVERSIONEXISTS": "Une version plus récente existe", + "CURRENTDATE": "Configuration actuelle", + "CHANGEDATE": "Version plus récente de", + "KEYNAME": "Écran / Interface de connexion", + "RESET_TITLE": "Restaurer les valeurs par défaut", + "RESET_DESCRIPTION": "Vous êtes sur le point de restaurer toutes les valeurs par défaut. Toutes les modifications que vous avez apportées seront définitivement supprimées. Voulez-vous vraiment continuer ?", + "UNSAVED_TITLE": "Continuer sans sauvegarder ?", + "UNSAVED_DESCRIPTION": "Vous avez apporté des modifications sans les sauvegarder. Voulez-vous les enregistrer maintenant ?", + "LOCALE": "Code Locale", + "LOCALES": { + "de": "Deutsch", + "en": "English", + "it": "Italiano", + "fr": "Français" + }, + "KEYS": { + "emailVerificationDoneText": "Vérification de l'email effectuée", + "emailVerificationText": "Vérification de l'email", + "externalUserNotFoundText": "Utilisateur externe non trouvé", + "footerText": "Pied de page", + "initMfaDoneText": "Initialiser MFA terminé", + "initMfaOtpText": "Initialiser MFA", + "initMfaPromptText": "Initialiser l'invite MFA", + "initMfaU2fText": "Initialiser le second facteur universel", + "initPasswordDoneText": "Initialiser le mot de passe fait", + "initPasswordText": "Initialiser le mot de passe", + "initializeDoneText": "Initialiser l'utilisateur terminé", + "initializeUserText": "Initialiser l'utilisateur", + "linkingUserDoneText": "Lier l'utilisateur fait", + "loginText": "Connexion", + "logoutText": "Déconnexion", + "mfaProvidersText": "Fournisseurs MFA", + "passwordChangeDoneText": "Changement de mot de passe effectué", + "passwordChangeText": "Changement de mot de passe", + "passwordResetDoneText": "Réinitialisation du mot de passe effectuée", + "passwordText": "Mot de passe", + "registrationOptionText": "Options d'enregistrement", + "registrationOrgText": "Enregistrer l'organisation", + "registrationUserText": "Enregistrer un utilisateur", + "selectAccountText": "Sélectionner un compte", + "successLoginText": "Connexion avec succès", + "usernameChangeDoneText": "Changement de nom d'utilisateur effectué", + "usernameChangeText": "Changement de nom d'utilisateur", + "verifyMfaOtpText": "Vérifier l'OTP", + "verifyMfaU2fText": "Vérifier le second facteur universel", + "passwordlessPromptText": "Invitation sans mot de passe", + "passwordlessRegistrationDoneText": "Enregistrement sans mot de passe Terminé", + "passwordlessRegistrationText": "Enregistrement sans mot de passe", + "passwordlessText": "Sans mot de passe", + "externalRegistrationUserOverviewText": "Enregistrement externe Aperçu de l'utilisateur" + } + }, + "MESSAGE_TEXTS": { + "TITLE": "Textes des messages", + "DESCRIPTION": "Définissez vos textes pour vos messages de notification.", + "TYPE": "Notification", + "TYPES": { + "INIT": "Initialisation", + "VE": "Vérifier l'email", + "VP": "Vérifier le téléphone", + "PR": "Réinitialisation du mot de passe", + "DC": "Réclamation de domaine", + "PL": "Sans mot de passe" + }, + "CHIPS": { + "firstname": "Prénom", + "lastname": "Nom de famille", + "code": "Code", + "preferredLoginName": "Nom de connexion préféré", + "displayName": "Nom d'affichage", + "nickName": "Surnom", + "loginnames": "Noms de connexion", + "domain": "Domaine", + "lastEmail": "Dernier email", + "lastPhone": "Dernier téléphone", + "verifiedEmail": "Courriel vérifié", + "verifiedPhone": "Téléphone vérifié", + "changedate": "Date de changement", + "username": "Nom d'utilisateur", + "tempUsername": "Nom d'utilisateur temporaire" + }, + "TOAST": { + "UPDATED": "Textes personnalisés enregistrés." + } + }, + "DEFAULTLABEL": "Les paramètres actuels correspondent au standard de votre Instance.", + "BTN_INSTALL": "Configurer", + "BTN_EDIT": "Modifier", + "DATA": { + "DESCRIPTION": "Description", + "MINLENGTH": "longueur minimale", + "HASNUMBER": "a numéro", + "HASSYMBOL": "a un symbole", + "HASLOWERCASE": "a minuscule", + "HASUPPERCASE": "a majuscule", + "SHOWLOCKOUTFAILURES": "montrer les échecs de verrouillage", + "MAXATTEMPTS": "Mot de passe maximum Tentatives", + "EXPIREWARNDAYS": "Expiration Avertissement après le jour", + "MAXAGEDAYS": "Âge maximum en jours", + "USERLOGINMUSTBEDOMAIN": "Le nom de connexion de l'utilisateur doit contenir le nom de domaine de l'organisation", + "VALIDATEORGDOMAINS": "Valider les domaines d'Org", + "SMTPSENDERADDRESSMATCHESINSTANCEDOMAIN": "L'adresse de l'expéditeur SMTP correspond au domaine de l'instance", + "ALLOWUSERNAMEPASSWORD": "Nom d'utilisateur Mot de passe autorisé", + "ALLOWEXTERNALIDP": "IDP externe autorisé", + "ALLOWREGISTER": "Enregistrement autorisé", + "ALLOWUSERNAMEPASSWORD_DESC": "La connexion classique avec nom d'utilisateur et mot de passe est autorisée.", + "ALLOWEXTERNALIDP_DESC": "La connexion est autorisée pour les fournisseurs d'identité sous-jacents", + "ALLOWREGISTER_DESC": "Si l'option est sélectionnée, une étape supplémentaire pour l'enregistrement d'un utilisateur apparaît dans la connexion.", + "FORCEMFA": "Forcer MFA", + "FORCEMFA_DESC": "Si l'option est sélectionnée, les utilisateurs doivent configurer un deuxième facteur pour la connexion.", + "HIDEPASSWORDRESET": "Masquer la réinitialisation du mot de passe", + "HIDEPASSWORDRESET_DESC": "Si l'option est sélectionnée, l'utilisateur ne peut pas réinitialiser son mot de passe lors du processus de connexion.", + "HIDELOGINNAMESUFFIX": "Masquer le suffixe du nom de connexion", + "IGNOREUNKNOWNUSERNAMES": "Ignorer les noms d'utilisateur inconnus", + "IGNOREUNKNOWNUSERNAMES_DESC": "Si l'option est sélectionnée, l'écran du mot de passe sera affiché dans le processus de connexion même si l'utilisateur n'a pas été trouvé. L'erreur sur la vérification du mot de passe ne révélera pas si le nom d'utilisateur ou le mot de passe était erroné.", + "DEFAULTREDIRECTURI": "URI de redirection par défaut", + "DEFAULTREDIRECTURI_DESC": "Définit l'endroit où l'utilisateur sera redirigé si la connexion a commencé sans contexte d'application (par exemple, à partir du courrier électronique).", + "ERRORMSGPOPUP": "Afficher l'erreur dans la boîte de dialogue", + "DISABLEWATERMARK": "Cacher le filigrane", + "PASSWORDCHECKLIFETIME": "Durée de vie de la vérification du mot de passe", + "EXTERNALLOGINCHECKLIFETIME": "Durée de vie de la vérification de la connexion externe", + "MFAINITSKIPLIFETIME": "Durée de vie de l'initialisation multifactorielle", + "SECONDFACTORCHECKLIFETIME": "Durée de vie de la vérification du second facteur", + "MULTIFACTORCHECKLIFETIME": "Durée de vie de la vérification multifactorielle", + "INHOURS": "heures" + }, + "RESET": "Réinitialiser à la valeur par défaut de l'Instance", + "CREATECUSTOM": "Créer une politique personnalisée", + "TOAST": { + "SET": "Politique définie avec succès !", + "RESETSUCCESS": "Politique réinitialisée avec succès !", + "UPLOADSUCCESS": "Téléchargé avec succès !", + "DELETESUCCESS": "Suppression réussie !", + "UPLOADFAILED": "Échec du téléchargement !" + } + }, + "ORG_DETAIL": { + "TITLE": "Organisation", + "DESCRIPTION": "Ici, vous pouvez modifier la configuration de votre organisation et gérer les membres.", + "DETAIL": { + "TITLE": "Détail", + "NAME": "Nom", + "DOMAIN": "Domaine", + "STATE": { + "0": "Non défini", + "1": "Actif", + "2": "Inactif" + } + }, + "MEMBER": { + "TITLE": "Membres", + "USERNAME": "Nom d'utilisateur", + "DISPLAYNAME": "Nom d'affichage", + "LOGINNAME": "Nom de connexion", + "EMAIL": "E-mail", + "ROLES": "Rôles", + "ADD": "Ajouter un membre", + "ADDDESCRIPTION": "Saisissez les noms des utilisateurs à ajouter." + }, + "TABLE": { + "TOTAL": "Total des entrées", + "SELECTION": "Éléments sélectionnés", + "DEACTIVATE": "Désactiver l'utilisateur", + "ACTIVATE": "Activer l'utilisateur", + "DELETE": "Supprimer l'utilisateur", + "CLEAR": "Effacer la sélection" + } + }, + "PROJECT": { + "PAGES": { + "TITLE": "Projet", + "DESCRIPTION": "Ici, vous pouvez définir des applications, gérer les rôles et autoriser d'autres organisations à utiliser votre projet.", + "DELETE": "Supprimer le projet", + "LIST": "Projets", + "LISTDESCRIPTION": "Si vous ne trouvez pas un projet, contactez le propriétaire du projet ou une personne ayant les droits correspondants pour obtenir l'accès au projet.", + "DETAIL": "Détail", + "CREATE": "Créer un projet", + "CREATE_DESC": "Insérez le nom de votre projet.", + "ROLE": "Rôle", + "NOITEMS": "Aucun projet", + "ZITADELPROJECT": "Ceci appartient au projet ZITADEL. Attention", + "TYPE": { + "OWNED": "Projets possédés", + "GRANTED": "Projets accordés", + "OWNED_SINGULAR": "Projet propre", + "GRANTED_SINGULAR": "Projet concédé" + }, + "PRIVATELABEL": { + "TITLE": "Image de marque", + "0": { + "TITLE": "Non spécifié", + "DESC": "Dès que l'utilisateur est identifié, la marque de l'organisation de l'utilisateur identifié sera affichée, avant que le système par défaut ne soit affiché." + }, + "1": { + "TITLE": "Utiliser le paramètre du projet", + "DESC": "L'image de marque de l'organisation propriétaire du projet s'affiche." + }, + "2": { + "TITLE": "Utiliser le paramètre de l'organisation de l'utilisateur", + "DESC": "La marque de l'organisation du projet sera affichée, mais dès que l'utilisateur est identifié, le paramètre de l'organisation de l'utilisateur identifié, sera affiché." + }, + "DIALOG": { + "TITLE": "Réglage de l'image de marque", + "DESCRIPTION": "Sélectionnez le comportement de la connexion, lors de l'utilisation du projet." + } + }, + "PINNED": "Épinglé", + "ALL": "Tous", + "CREATEDON": "Créé le", + "LASTMODIFIED": "Dernière modification le", + "ADDNEW": "Créer un nouveau projet", + "DIALOG": { + "REACTIVATE": { + "TITLE": "Réactiver le projet", + "DESCRIPTION": "Voulez-vous vraiment réactiver votre projet ?" + }, + "DEACTIVATE": { + "TITLE": "Désactiver le projet", + "DESCRIPTION": "Voulez-vous vraiment désactiver votre projet ?" + }, + "DELETE": { + "TITLE": "Supprimer le projet", + "DESCRIPTION": "Voulez-vous vraiment supprimer votre projet ?", + "TYPENAME": "Tapez le nom du projet pour le supprimer définitivement." + } + } + }, + "SETTINGS": { + "TITLE": "Paramètres", + "DESCRIPTION": "" + }, + "STATE": { + "TITLE": "Statut", + "0": "Non défini", + "1": "Actif", + "2": "Inactif" + }, + "TYPE": { + "TITLE": "Type", + "0": "Type inconnu", + "1": "Propriété", + "2": "Accordé" + }, + "NAME": "Nom", + "NAMEDIALOG": { + "TITLE": "Renommer le projet", + "DESCRIPTION": "Entrez le nouveau nom de votre projet", + "NAME": "Nouveau nom" + }, + "MEMBER": { + "TITLE": "Managers", + "TITLEDESC": "Les gestionnaires peuvent apporter des modifications à ce projet en fonction de leur rôle.", + "DESCRIPTION": "Ces gestionnaires peuvent être en mesure de modifier votre projet.", + "USERNAME": "Nom de l'utilisateur", + "DISPLAYNAME": "Nom d'affichage", + "LOGINNAME": "Nom de connexion", + "EMAIL": "E-mail", + "ROLES": "Rôles", + "USERID": "ID de l'utilisateur" + }, + "GRANT": { + "EMPTY": "Aucune organisation subventionnée.", + "TITLE": "Subventions de projet", + "DESCRIPTION": "Autoriser une autre organisation à utiliser votre projet.", + "EDITTITLE": "Rôles d'édition", + "CREATE": { + "TITLE": "Créer une subvention d'organisation", + "SEL_USERS": "Sélectionnez les utilisateurs auxquels vous souhaitez accorder l'accès", + "SEL_PROJECT": "Rechercher un projet", + "SEL_ROLES": "Sélectionnez les rôles que vous souhaitez ajouter à l'autorisation.", + "SEL_USER": "Sélectionnez les utilisateurs", + "SEL_ORG": "Définir le domaine", + "SEL_ORG_DESC": "Entrez le domaine complet pour spécifier l'organisation à accorder.", + "ORG_TITLE": "Organisation", + "ORG_DESCRIPTION": "Vous êtes sur le point d'accorder un utilisateur pour l'organisation{{name}}.", + "ORG_DESCRIPTION_DESC": "Changez le contexte dans l'en-tête ci-dessus pour accorder un utilisateur pour une autre organisation.", + "SEL_ORG_FORMFIELD": "Domaine complet", + "SEL_ORG_BUTTON": "Rechercher une organisation", + "FOR_ORG": "L'autorisation est créée pour" + }, + "DETAIL": { + "TITLE": "Subvention de projet", + "DESC": "Vous pouvez sélectionner les rôles qui peuvent être utilisés par l'organisation spécifiée, et élire les managers.", + "MEMBERTITLE": "Responsables", + "MEMBERDESC": "Il s'agit des gestionnaires de l'organisation subventionnée. Ajoutez ici les utilisateurs qui doivent avoir accès à la modification des données du projet.", + "PROJECTNAME": "Nom du projet", + "GRANTEDORG": "Organisation autorisée", + "RESOURCEOWNER": "Propriétaire des ressources" + }, + "STATE": "Statut", + "STATES": { + "1": "Actif", + "2": "Inactif" + }, + "ALL": "Tous", + "SHOWDETAIL": "Afficher les détails", + "USER": "Utilisateur", + "MEMBERS": "Managers", + "ORG": "Organisation", + "PROJECTNAME": "Nom du projet", + "GRANTEDORG": "Organisation accordée", + "GRANTEDORGDOMAIN": "Domaine", + "RESOURCEOWNER": "Propriétaire de la ressource", + "GRANTEDORGNAME": "Nom de l'organisation", + "CREATIONDATE": "Date de création", + "CHANGEDATE": "Dernière modification", + "DATES": "Dates", + "ROLENAMESLIST": "Rôles", + "NOROLES": "Aucun rôle", + "TYPE": "Type", + "TOAST": { + "PROJECTGRANTUSERGRANTADDED": "Subvention de projet créée.", + "PROJECTGRANTADDED": "Accord de projet créé.", + "PROJECTGRANTCHANGED": "Subvention de projet modifiée.", + "PROJECTGRANTMEMBERADDED": "Ajout d'un gestionnaire de subvention.", + "PROJECTGRANTMEMBERCHANGED": "Directeur de subvention modifié.", + "PROJECTGRANTMEMBERREMOVED": "Gestionnaire de subvention supprimé.", + "PROJECTGRANTUPDATED": "Subvention de projet mise à jour" + }, + "DIALOG": { + "DELETE_TITLE": "Supprimer une subvention de projet", + "DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer une subvention de projet. Vous êtes sûr ?" + }, + "ROLES": "Rôles du projet" + }, + "APP": { + "TITLE": "Applications", + "NAME": "Nom", + "NAMEREQUIRED": "Un nom est requis." + }, + "ROLE": { + "EMPTY": "Aucun rôle n'a encore été créé.", + "ADDNEWLINE": "Ajouter un rôle supplémentaire", + "KEY": "Clé", + "TITLE": "Rôles", + "DESCRIPTION": "Définissez certains rôles qui peuvent être utilisés pour créer des subventions de projet.", + "NAME": "Nom", + "DISPLAY_NAME": "Afficher le nom", + "GROUP": "Groupe", + "ACTIONS": "Actions", + "ADDTITLE": "Créer un rôle", + "ADDDESCRIPTION": "Entrez les données pour le nouveau rôle.", + "EDITTITLE": "Modifier un rôle", + "EDITDESCRIPTION": "Entrez les nouvelles données pour le rôle.", + "DELETE": "Supprimer un rôle", + "CREATIONDATE": "Créé", + "CHANGEDATE": "Dernière modification", + "SELECTGROUPTOOLTIP": "Sélectionner tous les Rôles du groupe{{group}}.", + "OPTIONS": "Options", + "ASSERTION": "Affirmer les rôles lors de l'authentification", + "ASSERTION_DESCRIPTION": "Les informations sur les rôles sont envoyées par le point de terminaison Userinfo et, selon les paramètres de votre application, sous forme de jetons ou d'autres types.", + "CHECK": "Vérifier l'autorisation lors de l'authentification", + "CHECK_DESCRIPTION": "Si cette option est définie, les utilisateurs ne sont autorisés à s'authentifier que si un rôle est attribué à leur compte.", + "DIALOG": { + "DELETE_TITLE": "Supprimer un rôle", + "DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer un rôle de projet. Êtes-vous sûr ?" + } + }, + "HAS_PROJECT": "Vérifier le projet lors de l'authentification", + "HAS_PROJECT_DESCRIPTION": "Il est vérifié si l'organisation de l'utilisateur possède ce projet. Si ce n'est pas le cas, l'utilisateur ne peut pas être authentifié.", + "TABLE": { + "TOTAL": "Total des entrées", + "SELECTION": "Éléments sélectionnés", + "DEACTIVATE": "Désactiver le projet", + "ACTIVATE": "Activer le projet", + "DELETE": "Supprimer le projet", + "ORGNAME": "Nom de l'organisation", + "ORGDOMAIN": "Domaine de l'organisation", + "STATE": "Statut", + "TYPE": "Type", + "CREATIONDATE": "Créé à", + "CHANGEDATE": "Dernière modification", + "RESOURCEOWNER": "Propriétaire", + "SHOWTABLE": "Afficher le tableau", + "SHOWGRID": "Afficher la grille", + "EMPTY": "Aucun projet trouvé" + }, + "TOAST": { + "MEMBERREMOVED": "Gestionnaire supprimé.", + "MEMBERSADDED": "Gestionnaires ajoutés.", + "MEMBERADDED": "Gestionnaire ajouté.", + "MEMBERCHANGED": "Manager changé.", + "ROLESCREATED": "Rôles créés.", + "ROLEREMOVED": "Rôle supprimé.", + "ROLECHANGED": "Rôle modifié.", + "REACTIVATED": "Réactivé.", + "DEACTIVATED": "Désactivé.", + "CREATED": "Projet créé.", + "UPDATED": "Projet modifié.", + "GRANTUPDATED": "Subvention modifiée.", + "DELETED": "Projet supprimé." + } + }, + "NEXTSTEPS": { + "TITLE": "Étapes suivantes" + }, + "IDP": { + "LIST": { + "TITLE": "Fournisseurs d'identité", + "DESCRIPTION": "Gérez la configuration de votre fournisseur d'identité, qui peut ensuite être activé dans vos paramètres de connexion.", + "ACTIVETITLE": "Fournisseurs d'identité actifs" + }, + "CREATE": { + "TITLE": "Nouveau fournisseur d'identité", + "DESCRIPTION": "Choisissez l'un des types de fournisseur d'identité suivants." + }, + "DETAIL": { + "TITLE": "Fournisseur d'identité", + "DESCRIPTION": "Configuration générale de votre fournisseur d'identité.", + "DATECREATED": "Créé", + "DATECHANGED": "Modifié" + }, + "OWNERTYPES": { + "0": "inconnu", + "1": "Instance", + "2": "Organisation" + }, + "TYPES": { + "0": "inconnu", + "1": "OIDC", + "3": "JWT" + }, + "STATES": { + "1": "actif", + "2": "inactif" + }, + "MAPPINGFIELD": { + "1": "Nom d'utilisateur préféré", + "2": "Courriel" + }, + "STYLE": "Style", + "STYLEFIELD": { + "0": "Pas de style", + "1": "Google" + }, + "ADD": "Ajouter un fournisseur d'identité", + "AUTOREGISTER": "Enregistrement automatique", + "AUTOREGISTER_DESC": "Si cette option est sélectionnée et qu'aucun compte n'existe encore, un compte sera créé.", + "TYPE": "Type", + "OWNER": "Propriétaire", + "ID": "ID", + "NAME": "Nom", + "AVAILABILITY": "Disponibilité", + "AVAILABLE": "disponible", + "AVAILABLEBUTINACTIVE": "disponible mais inactif", + "SETAVAILABLE": "défini comme disponible", + "SETUNAVAILABLE": "défini comme non disponible", + "CONFIG": "Configuration", + "STATE": "Statut", + "ISSUER": "Émetteur", + "SCOPESLIST": "Liste des champs d'application", + "CLIENTID": "ID du client", + "CLIENTSECRET": "Secret du client", + "IDPDISPLAYNAMMAPPING": "Mappage de IDP nom d'affichage", + "USERNAMEMAPPING": "Mappage des noms d'utilisateur", + "DATES": "Dates", + "CREATIONDATE": "Créé à", + "CHANGEDATE": "Dernière modification", + "DEACTIVATE": "Désactiver", + "ACTIVATE": "Activer", + "DELETE": "Supprimer", + "DELETE_TITLE": "Supprimer Idp", + "DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer un fournisseur d'identité. Les changements qui en résultent sont irrévocables. Voulez-vous vraiment le faire ?", + "DELETE_SELECTION_TITLE": "Supprimer Idp", + "DELETE_SELECTION_DESCRIPTION": "Vous êtes sur le point de supprimer un fournisseur d'identité. Les changements qui en résultent sont irrévocables. Voulez-vous vraiment le faire ?", + "EMPTY": "Aucun IPD disponible", + "OIDC": { + "GENERAL": "Informations générales", + "TITLE": "Configuration de l'OIDC", + "DESCRIPTION": "Saisissez les données pour le fournisseur d'identité OIDC." + }, + "JWT": { + "TITLE": "Configuration JWT", + "DESCRIPTION": "Entrez les données pour le fournisseur d'identité JWT.", + "HEADERNAME": "Nom de l'en-tête", + "JWTENDPOINT": "Point de terminaison JWT", + "JWTKEYSENDPOINT": "Point de terminaison des clés JWT" + }, + "TOAST": { + "SAVED": "Enregistré avec succès.", + "REACTIVATED": "Idp réactivé.", + "DEACTIVATED": "Idp désactivé.", + "SELECTEDREACTIVATED": "Idps sélectionnés réactivés.", + "SELECTEDDEACTIVATED": "Idps sélectionné désactivé.", + "SELECTEDKEYSDELETED": "Idps sélectionnés supprimés.", + "DELETED": "Idp supprimé avec succès !", + "ADDED": "Ajouté avec succès.", + "REMOVED": "Suppression réussie." + } + }, + "MFA": { + "LIST": { + "MULTIFACTORTITLE": "Sans mot de passe", + "MULTIFACTORDESCRIPTION": "Définissez ici vos multifacteurs pour votre authentification sans mot de passe.", + "SECONDFACTORTITLE": "Authentification multifactorielle", + "SECONDFACTORDESCRIPTION": "Définissez d'autres facteurs possibles avec lesquels vous pouvez sécuriser votre authentification par mot de passe." + }, + "CREATE": { + "TITLE": "Nouveau facteur", + "DESCRIPTION": "Sélectionnez votre nouveau type de facteur." + }, + "DELETE": { + "TITLE": "Supprimer un facteur", + "DESCRIPTION": "Vous êtes sur le point de supprimer un facteur des paramètres de connexion. Etes-vous sûr ?" + }, + "TOAST": { + "ADDED": "Ajouté avec succès.", + "SAVED": "Sauvegardé avec succès.", + "DELETED": "Supprimé avec succès" + }, + "TYPE": "Type", + "MULTIFACTORTYPES": { + "0": "Inconnu", + "1": "Empreinte digitale, clés de sécurité, Face ID et autres" + }, + "SECONDFACTORTYPES": { + "0": "Inconnu", + "1": "Mot de passe à usage unique (OTP)", + "2": "Empreinte digitale, clés de sécurité, Face ID et autres" + } + }, + "LOGINPOLICY": { + "CREATE": { + "TITLE": "Paramètres de connexion", + "DESCRIPTION": "Définissez comment vos utilisateurs peuvent être authentifiés sur votre organisation." + }, + "IDPS": "Fournisseurs d'identité", + "ADDIDP": { + "TITLE": "Ajouter un fournisseur d'identité", + "DESCRIPTION": "Vous pouvez sélectionner des fournisseurs prédéfinis ou créés par vous-même pour l'authentification.", + "SELECTIDPS": "Fournisseurs d'identité" + }, + "PASSWORDLESS": "Connexion sans mot de passe", + "PASSWORDLESSTYPE": { + "0": "Non autorisé", + "1": "Autorisée" + } + }, + "APP": { + "LIST": "Applications", + "COMPLIANCE": "Conformité à l'OIDC", + "URLS": "Urls", + "CONFIGURATION": "Configuration", + "TOKEN": "Paramètres du jeton", + "PAGES": { + "TITLE": "Application", + "ID": "ID", + "DESCRIPTION": "Ici vous pouvez modifier les données de votre application et sa configuration.", + "CREATE_OIDC": "Application OIDC", + "CREATE_OIDC_DESC_TITLE": "Entrez les détails de votre application étape par étape", + "CREATE_OIDC_DESC_SUB": "Une configuration recommandée sera automatiquement générée.", + "STATE": "Statut", + "DATECREATED": "Créé", + "DATECHANGED": "Modifié", + "URLS": "Urls", + "DELETE": "Supprimer l'application", + "DETAIL": { + "TITLE": "Détail", + "STATE": { + "0": "Non défini", + "1": "Actif", + "2": "Inactif" + } + }, + "DIALOG": { + "CONFIG": { + "TITLE": "Modifier la configuration de l'OIDC" + }, + "DELETE": { + "TITLE": "Supprimer l'application", + "DESCRIPTION": "Voulez-vous vraiment supprimer cette application ?" + } + }, + "NEXTSTEPS": { + "TITLE": "Etapes suivantes", + "0": { + "TITLE": "Ajouter des rôles", + "DESC": "Entrez les rôles de votre projet" + }, + "1": { + "TITLE": "Ajouter des utilisateurs", + "DESC": "Ajoutez les nouveaux utilisateurs de votre organisation" + }, + "2": { + "TITLE": "Aide et support", + "DESC": "Lisez notre documentation sur la création d'applications ou contactez notre assistance" + } + } + }, + "NAMEDIALOG": { + "TITLE": "Renommer l'application", + "DESCRIPTION": "Entrez le nouveau nom de votre application", + "NAME": "Nouveau nom" + }, + "NAME": "Nom", + "TYPE": "Type d'application", + "AUTHMETHOD": "Méthode d'authentification", + "AUTHMETHODSECTION": "Méthode d'authentification", + "GRANT": "Types de subventions", + "ADDITIONALORIGINS": "Origines supplémentaires", + "ADDITIONALORIGINSDESC": "Si vous voulez ajouter des origines supplémentaires à votre application qui n'est pas utilisée comme une redirection, vous pouvez le faire ici.", + "ORIGINS": "Origines", + "NOTANORIGIN": "La valeur saisie n'est pas une origine", + "OIDC": { + "INFO": { + "ISSUER": "Émetteur", + "CLIENTID": "Id client" + }, + "CURRENT": "Current Config", + "TOKENSECTIONTITLE": "Options AuthToken", + "REDIRECTSECTIONTITLE": "Paramètres de redirection", + "PROSWITCH": "Je suis un pro. Sautez cet assistant.", + "NAMEANDTYPESECTION": "Nom et type", + "TITLEFIRST": "Commencez par insérer un nom.", + "TYPETITLE": "Quel type d'application voulez-vous créer ?", + "REDIRECTTITLE": "Indiquez les URI vers lesquels le login sera redirigé.", + "POSTREDIRECTTITLE": "Il s'agit de l'URI de redirection après la déconnexion.", + "REDIRECTDESCRIPTIONWEB": "Les URI de redirection doivent commencer par https.", + "REDIRECTDESCRIPTIONNATIVE": "Les URI de redirection doivent commencer par votre propre protocole, http.", + "REDIRECTNOTVALID": "Cet URI de redirection n'est pas valide.", + "COMMAORENTERSEPERATION": "séparer par ↵", + "TYPEREQUIRED": "Le type est obligatoire.", + "TITLE": "Configuration de l'OIDC", + "CLIENTID": "ID client", + "CLIENTSECRET": "Secret du client", + "CLIENTSECRET_NOSECRET": "Avec le flux d'authentification que vous avez choisi, aucun secret n'est requis et n'est donc pas disponible.", + "CLIENTSECRET_DESCRIPTION": "Conservez votre secret client dans un endroit sûr car il disparaîtra une fois la boîte de dialogue fermée.", + "REGENERATESECRET": "Régénérer le secret du client", + "DEVMODE": "Mode développement", + "DEVMODEDESC": "Attention", + "REDIRECT": "Rediriger les URI", + "REDIRECTSECTION": "URI de redirection", + "POSTLOGOUTREDIRECT": "URIs de post-déconnexion", + "RESPONSESECTION": "Types de réponses", + "GRANTSECTION": "Types de subventions", + "GRANTTITLE": "Sélectionnez vos types de subventions. Note", + "APPTYPE": { + "0": "Web", + "1": "Agent utilisateur", + "2": "Natif" + }, + "RESPONSETYPE": "Types de réponse", + "RESPONSE": { + "0": "Code", + "1": "ID-Jeton", + "2": "ID-Jeton Jeton" + }, + "REFRESHTOKEN": "Jeton de rafraîchissement", + "GRANTTYPE": "Types d'octroi", + "GRANT": { + "0": "Code d'autorisation", + "1": "Implicite", + "2": "Rafraîchir le jeton" + }, + "AUTHMETHOD": { + "0": "Basic", + "1": "Post", + "2": "Aucun", + "3": "Clé privée JWT" + }, + "TOKENTYPE": "Type de jeton d'authentification", + "TOKENTYPE0": "Jeton porteur", + "TOKENTYPE1": "JWT", + "UNSECUREREDIRECT": "J'espère que vous savez ce que vous faites.", + "OVERVIEWSECTION": "Vue d'ensemble", + "OVERVIEWTITLE": "Vous avez maintenant terminé. Revoyez votre configuration.", + "ACCESSTOKENROLEASSERTION": "Ajouter les rôles des utilisateurs au jeton d'accès", + "ACCESSTOKENROLEASSERTION_DESCRIPTION": "Si cette option est sélectionnée, les rôles demandés de l'utilisateur authentifié sont ajoutés au jeton d'accès.", + "IDTOKENROLEASSERTION": "Rôles de l'utilisateur dans le jeton d'identification", + "IDTOKENROLEASSERTION_DESCRIPTION": "Si sélectionné, les rôles demandés à l'utilisateur authentifié sont ajoutés au jeton d'identification.", + "IDTOKENUSERINFOASSERTION": "Informations sur l'utilisateur dans le jeton d'identification", + "IDTOKENUSERINFOASSERTION_DESCRIPTION": "Permet aux clients de récupérer le profil, l'email, le téléphone et l'adresse à partir du jeton d'identification.", + "CLOCKSKEW": "Permet aux clients de gérer le décalage d'horloge de l'OP et du client. La durée (0-5s) sera ajoutée à la réclamation exp et soustraite de iats, auth_time et nbf.", + "RECOMMENDED": "recommandé", + "NOTRECOMMENDED": "non recommandé", + "SELECTION": { + "APPTYPE": { + "WEB": { + "TITLE": "Web", + "DESCRIPTION": "Applications Web ordinaires comme .net, PHP, Node.js, Java, etc." + }, + "NATIVE": { + "TITLE": "Native", + "DESCRIPTION": "Applications mobiles, ordinateurs de bureau, appareils intelligents, etc." + }, + "USERAGENT": { + "TITLE": "Agent utilisateur", + "DESCRIPTION": "Single Page Applications (SPA) et en général tous les frameworks JS exécutés dans les navigateurs" + } + } + } + }, + "API": { + "INFO": { + "CLIENTID": "Id. du client" + }, + "REGENERATESECRET": "Regénérer le secret du client", + "SELECTION": { + "TITLE": "API", + "DESCRIPTION": "API en général" + }, + "AUTHMETHOD": { + "0": "Base", + "1": "Clé privée JWT" + } + }, + "AUTHMETHODS": { + "CODE": { + "TITLE": "Code", + "DESCRIPTION": "Echanger le code d'autorisation pour les jetons" + }, + "PKCE": { + "TITLE": "PKCE", + "DESCRIPTION": "Utiliser un hachage aléatoire au lieu d'un secret client statique pour plus de sécurité" + }, + "POST": { + "TITLE": "POST", + "DESCRIPTION": "Envoyer client_id et client_secret comme partie du formulaire" + }, + "PK_JWT": { + "TITLE": "Clé privée JWT", + "DESCRIPTION": "Utilisez une clé privée pour autoriser votre application" + }, + "BASIC": { + "TITLE": "Basique", + "DESCRIPTION": "Authentification avec nom d'utilisateur et mot de passe" + }, + "IMPLICIT": { + "TITLE": "Implicite", + "DESCRIPTION": "Obtenir les jetons directement à partir du point final d'autorisation" + }, + "CUSTOM": { + "TITLE": "Personnalisé", + "DESCRIPTION": "Votre paramètre ne correspond à aucune autre option." + } + }, + "TOAST": { + "REACTIVATED": "Application réactivée.", + "DEACTIVATED": "Application désactivée.", + "OIDCUPDATED": "Application mise à jour.", + "APIUPDATED": "Application mise à jour", + "UPDATED": "Application mise à jour.", + "CREATED": "Application créée.", + "CLIENTSECRETREGENERATED": "secret client généré.", + "DELETED": "Application supprimée.", + "CONFIGCHANGED": "Changements détectés !" + } + }, + "GENDERS": { + "0": "Inconnu", + "1": "Femme", + "2": "Homme", + "3": "Autre" + }, + "LANGUAGES": { + "de": "Deutsch", + "it": "Italiano", + "en": "English" + }, + "MEMBER": { + "ADD": "Ajouter un manager", + "CREATIONTYPE": "Type de création", + "CREATIONTYPES": { + "3": "IAM", + "2": "Organisation", + "0": "Projet Détenu", + "1": "Projet Concédé", + "4": "Projet" + }, + "EDITROLE": "Modifier les rôles", + "EDITFOR": "Modifier les rôles de l'utilisateur", + "DIALOG": { + "DELETE_TITLE": "Supprimer un manager", + "DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer un manager. Vous êtes sûr ?" + } + }, + "ROLESLABEL": "Rôles", + "GRANTS": { + "TITLE": "Autorisations", + "DESC": "Ce sont toutes les autorisations sur votre organisation.", + "DELETE": "Supprimer une autorisation", + "EMPTY": "Aucune autorisation trouvée", + "ADD": "Créer une autorisation", + "ADD_BTN": "Nouveau", + "PROJECT": { + "TITLE": "Autorisation", + "DESCRIPTION": "Définit les autorisations pour le projet spécifié. Notez que vous ne pouvez voir que les entrées des projets et des utilisateurs pour lesquels vous avez les autorisations." + }, + "USER": { + "TITLE": "Autorisation", + "DESCRIPTION": "Définit les autorisations pour l'utilisateur spécifié. Notez que vous pouvez seulement voir les entrées des projets et des utilisateurs pour lesquels vous avez les permissions." + }, + "CREATE": { + "TITLE": "Créer une autorisation", + "DESCRIPTION": "Rechercher l'organisation, le projet et les rôles correspondants." + }, + "EDIT": { + "TITLE": "Modifier l'autorisation" + }, + "DETAIL": { + "TITLE": "Détail de l'autorisation", + "DESCRIPTION": "Vous pouvez voir ici tous les détails de l'autorisation." + }, + "TOAST": { + "UPDATED": "Autorisation mise à jour.", + "REMOVED": "Autorisation supprimée", + "BULKREMOVED": "Autorisations supprimées." + }, + "DIALOG": { + "DELETE_TITLE": "Supprimer une autorisation", + "DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer une autorisation. Voulez-vous continuer ?", + "BULK_DELETE_TITLE": "Supprimer des autorisations", + "BULK_DELETE_DESCRIPTION": "Vous êtes sur le point de supprimer plusieurs autorisations. Voulez-vous continuer ?" + } + }, + "CHANGES": { + "LISTTITLE": "Dernières modifications", + "BOTTOM": "Vous avez atteint la fin de la liste.", + "LOADMORE": "Charger plus", + "ORG": { + "TITLE": "Activité", + "DESCRIPTION": "Vous pouvez voir ici les derniers événements qui ont généré un changement d'organisation." + }, + "PROJECT": { + "TITLE": "Activité", + "DESCRIPTION": "Vous pouvez voir ici les derniers événements qui ont généré un changement de projet." + }, + "USER": { + "TITLE": "Activité", + "DESCRIPTION": "Vous pouvez voir ici les derniers événements qui ont généré un changement d'utilisateur." + } + } +} diff --git a/console/src/assets/i18n/it.json b/console/src/assets/i18n/it.json index 62821e1bd02..f865736e82e 100644 --- a/console/src/assets/i18n/it.json +++ b/console/src/assets/i18n/it.json @@ -22,16 +22,16 @@ "DISCLAIMERLINK": "Ulteriori informazioni", "DOCUMENTATION": { "TITLE": "Documentazione", - "DESCRIPTION": "Mit ZITADEL schnell durchstarten." + "DESCRIPTION": "Inizia con ZITADEL." }, "GETSTARTED": { "TITLE": "Come iniziare con ZITADEL", - "DESCRIPTION": "Mit ZITADEL schnell durchstarten." + "DESCRIPTION": "Inizia con ZITADEL." }, "QUICKSTARTS": { "LABEL": "Primi passi", "TITLE": "Quickstarts", - "DESCRIPTION": "Iniziare rapidamente con ZITADEL." + "DESCRIPTION": "Inizia con ZITADEL." }, "SHORTCUTS": { "SHORTCUTS": "Scorciatoie", diff --git a/docs/docs/guides/customization/texts.md b/docs/docs/guides/customization/texts.md index 654d2df0d4d..9902ebe4934 100644 --- a/docs/docs/guides/customization/texts.md +++ b/docs/docs/guides/customization/texts.md @@ -36,6 +36,7 @@ ZITADEL is available in the following languages - English (en) - German (de) - Italian (it) +- French (fr) A language is displayed based on your agent's language header. The default language is English. diff --git a/internal/api/ui/login/static/i18n/fr.yaml b/internal/api/ui/login/static/i18n/fr.yaml new file mode 100644 index 00000000000..b53e61dc31f --- /dev/null +++ b/internal/api/ui/login/static/i18n/fr.yaml @@ -0,0 +1,372 @@ +Login: + Title: Bienvenue! + Description: Entrez vos données de connexion. + TitleLinking: Login pour la liaison des utilisateurs + DescriptionLinking: Entrez vos données de connexion pour lier votre utilisateur externe avec un utilisateur ZITADEL. + LoginNameLabel: Identifiant + UsernamePlaceHolder: nom d'utilisateur + LoginnamePlaceHolder: nom d'utilisateur@domaine + ExternalUserDescription: Se connecter avec un utilisateur externe. + MustBeMemberOfOrg: L'utilisateur doit être membre de l'organisation {{.OrgName}} . + RegisterButtonText: s'inscrire + NextButtonText: suivant + +SelectAccount: + Title: Select account + Description: Use your ZITADEL-Account + TitleLinking: Select account for user linking + DescriptionLinking: Select your account to link with your external user. + OtherUser: Other User + SessionState0: active + SessionState1: inactive + MustBeMemberOfOrg: The user must be member of the {{.OrgName}} organisation. + +Password: + Title: Mot de passe + Description: Entrez vos données de connexion. + PasswordLabel: Mot de passe + MinLength: Longueur minimale + HasUppercase: Lettre majuscule + HasLowercase: Lettre minuscule + HasNumber: Numéro + HasSymbol: Symbole + Confirmation: Correspondance de confirmation + ResetLinkText: réinitialiser le mot de passe + BackButtonText: retour + NextButtonText: suivant + +UsernameChange: + Title: Modifier le nom d'utilisateur + Description: Définissez votre nouveau nom d'utilisateur + UsernameLabel: Nom d'utilisateur : + CancelButtonText: annuler + NextButtonText: suivant + +UsernameChangeDone: + Title: Nom d'utilisateur modifié + Description: Votre nom d'utilisateur a été changé avec succès. + NextButtonText: suivant + +InitPassword: + Title: Définir un mot de passe + Description: Vous avez reçu un code, que vous devez saisir dans le formulaire ci-dessous, pour définir votre nouveau mot de passe. + CodeLabel: Code + NewPasswordLabel: Nouveau mot de passe + NewPasswordConfirmLabel: Confirmer le mot de passe + ResendButtonText: envoyer à nouveau + NextButtonText: suivant + +InitPasswordDone: + Title: Mot de passe défini + Description: Mot de passe défini avec succès + NextButtonText: Suivant + CancelButtonText: Annuler + +InitUser: + Title: Activer l'utilisateur + Description: Vous avez reçu un code, que vous devez entrer dans le formulaire ci-dessous, pour vérifier votre e-mail et définir votre nouveau mot de passe. + CodeLabel: Code + NewPasswordLabel: Nouveau mot de passe + NewPasswordConfirmLabel: Confirmer le mot de passe + NextButtonText: Suivant + ResendButtonText: envoyer à nouveau + +InitUserDone: + Title: User Utilisateur activé + Description: Email vérifié et mot de passe défini avec succès + NextButtonText: Suivant + CancelButtonText: annuler + +InitMFAPrompt: + Title: Configuration multifactorielle + Description: Voulez-vous configurer l'authentification multifactorielle ? + Provider0: OTP (mot de passe à usage unique) + Provider1: U2F (2e facteur universel) + NextButtonText: Suivant + SkipButtonText: Passer + +InitMFAOTP: + Title: Vérification multifactorielle + Description: Vérifier votre multifacteur. + OTPDescription: Scannez le code avec votre application d'authentification (par exemple Google Authenticator) ou copiez le secret et insérez le code généré ci-dessous. + SecretLabel: Secret + CodeLabel: Code + NextButtonText: Suivant + CancelButtonText: Annuler + +InitMFAU2F: + Title: Configuration multifactorielle U2F / WebAuthN + Description: Ajoutez votre Token en fournissant un nom et en cliquant sur le bouton "Enregistrer un Token" ci-dessous. + TokenNameLabel: Nom du jeton / de la machine + NotSupported: WebAuthN n'est pas pris en charge par votre navigateur. Veuillez vous assurer qu'il est à jour ou utiliser un autre navigateur (par exemple Chrome, Safari, Firefox). + RegisterTokenButtonText: Enregistrer le jeton + ErrorRetry: Réessayez, créez un nouveau défi ou choisissez une autre méthode. + +InitMFADone: + Title: Vérification multifactorielle effectuée + Description: La vérification multifactorielle a été effectuée avec succès. Le multifacteur doit être saisi à chaque connexion. + NextButtonText: Suivant + CancelButtonText: Annuler +MFAProvider: + Provider0: OTP (Mot de passe à usage unique) + Provider1: U2F (2ne facteur universel) + ChooseOther: ou choisissez une autre option + +VerifyMFAOTP: + Title: Vérifier le multifacteur + Description: Vérifier votre multifacteur + CodeLabel: Code + NextButtonText: Suivant + +VerifyMFAU2F: + Title: Vérification multifactorielle + Description: Vérifiez votre jeton multifactoriel U2F / WebAuthN. + NotSupported: WebAuthN n'est pas pris en charge par votre navigateur. Assurez-vous que vous utilisez la dernière version ou changez votre navigateur pour un navigateur pris en charge (Chrome, Safari, Firefox). + ErrorRetry: Réessayer, créer une nouvelle demande ou choisir une autre méthode. + ValidateTokenButtonText: Valider le jeton + +Passwordless: + Title: Connexion sans mot de passe + Description: Vérifiez votre jeton + NotSupported: WebAuthN n'est pas pris en charge par votre navigateur. Veuillez vous assurer qu'il est à jour ou utiliser un autre navigateur (par exemple Chrome, Safari, Firefox). + ErrorRetry: Réessayez, créez un nouveau défi ou choisissez une autre méthode. + LoginWithPwButtonText: Connectez-vous avec le mot de passe + ValidateTokenButtonText: Valider le jeton + +PasswordlessPrompt: + Title: Configuration sans mot de passe + Description: Souhaitez-vous configurer une connexion sans mot de passe ? + DescriptionInit: Vous devez configurer la connexion sans mot de passe. Utilisez le lien qui vous a été donné pour enregistrer votre appareil. + PasswordlessButtonText : Aller sans mot de passe + NextButtonText : suivant + SkipButtonText : Passer + +PasswordlessRegistration: + Title : Configuration sans mot de passe + Description : Ajoutez votre Token en fournissant un nom et en cliquant sur le bouton 'Enregistrer le jeton' ci-dessous. + TokenNameLabel : Nom du jeton / de la machine + NotSupported : WebAuthN n'est pas pris en charge par votre navigateur. Veuillez vous assurer qu'il est à jour ou utiliser un autre navigateur (par exemple Chrome, Safari, Firefox). + RegisterTokenButtonText : Register Token + ErrorRetry : Réessayer, créer un nouveau défi ou choisir une autre méthode. + +PasswordlessRegistrationDone: + Title : Configuration sans mot de passe + Description : Le jeton pour le système sans mot de passe a été ajouté avec succès. + DescriptionClose : Vous pouvez maintenant fermer cette fenêtre. + NextButtonText : suivant + CancelButtonText : annuler + +PasswordChange: + Title : Changer le mot de passe + Description : Changez votre mot de passe. Entrez votre ancien et votre nouveau mot de passe. + OldPasswordLabel : Ancien mot de passe + NewPasswordLabel : Nouveau mot de passe + NewPasswordConfirmLabel : Confirmation du mot de passe + CancelButtonText : annuler + NextButtonText : suivant + +PasswordChangeDone: + Title : Changer le mot de passe + Description : Votre mot de passe a été modifié avec succès. + NextButtonText : suivant + +PasswordResetDone : + Title : Réinitialisation du jeu de liens + Description : Vérifiez votre e-mail pour réinitialiser votre mot de passe. + NextButtonText : suivant + +EmailVerification : + Title : Vérification de l'email + Description : Nous vous avons envoyé un e-mail pour vérifier votre adresse. Veuillez saisir le code dans le formulaire ci-dessous. + CodeLabel : Code + NextButtonText : suivant + ResendButtonText : envoyer à nouveau + +EmailVerificationDone : + Title : E-Mail Verification + Description : Votre adresse électronique a été vérifiée avec succès. + NextButtonText : suivant + CancelButtonText : annuler + LoginButtonText : connexion + +RegisterOption : + Title : Options d'enregistrement + Description : Choisissez comment vous souhaitez vous enregistrer + RegisterUsernamePasswordButtonText: Avec nom d'utilisateur et mot de passe + ExternalLoginDescription : ou s'enregistrer avec un utilisateur externe + + +RegistrationUser: + Title : Inscription + Description : Entrez vos données d'utilisateur. Votre adresse e-mail sera utilisée comme nom de connexion. + DescriptionOrgRegister : Entrez vos données d'utilisateur. + EmailLabel : E-Mail + UsernameLabel : Username + FirstnameLabel : Firstname + LastnameLabel : Nom de famille + LangueLabel : Language : Langue + German : Deutsch + English : English + Italian : Italiano + GenderLabel : Genre + Female : Femme + Male : Homme + Diverse : divers / X + PasswordLabel : Mot de passe + PasswordConfirmLabel : Confirmation du mot de passe + TosAndPrivacyLabel : Termes et conditions + TosConfirm : J'accepte les + TosLinkText : TOS + TosConfirmAnd : et la + PrivacyLinkText : politique de confidentialité + ExternalLogin : ou m'inscrire avec un utilisateur externe + BackButtonText : retour + NextButtonText : suivant + + +ExternalRegistrationUserOverview: + Title : Enregistrement des utilisateurs externes + Description : Nous avons pris vos coordonnées d'utilisateur auprès du fournisseur sélectionné. Vous pouvez maintenant les modifier ou les compléter. + EmailLabel : E-Mail + UsernameLabel : Identifiant + FirstnameLabel : Prénom + LastnameLabel : Nom + NicknameLabel : Surnom + PhoneLabel : Numéro de téléphone + LangueLabel : Language : Langue + German : Deutsch + English : English + Italian : Italiano + TosAndPrivacyLabel : Termes et conditions + TosConfirm : J'accepte les + TosLinkText : TOS + TosConfirmAnd : et la + PrivacyLinkText : politique de confidentialité + ExternalLogin : ou m'inscrire avec un utilisateur externe + BackButtonText : retour + NextButtonText : enregistrer + +RegistrationOrg: + Title : Enregistrement de l'organisation + Description : Entrez le nom de votre organisation et vos données d'utilisateur. + OrgNameLabel : Nom de l'organisation + EmailLabel : E-Mail + UsernameLabel : Nom d'utilisateur + FirstnameLabel : Prénom + LastnameLabel : Nom de famille + PasswordLabel : Password : Mot de passe + PasswordConfirmLabel : Confirmation du mot de passe + TosAndPrivacyLabel : Termes et conditions + TosConfirm : J'accepte les + TosLinkText : TOS + TosConfirmAnd : et la + PrivacyLinkText : politique de confidentialité + SaveButtonText : Créer une organisation + +LoginSuccess: + Title : Connexion réussie + AutoRedirectDescription : Vous serez automatiquement redirigé vers votre application. Si ce n'est pas le cas, cliquez sur le bouton ci-dessous. Vous pouvez ensuite fermer la fenêtre. + RedirectedDescription : Vous pouvez maintenant fermer cette fenêtre. + NextButtonText : suivant + +LogoutDone: + Title : Déconnecté + Description : Vous vous êtes déconnecté avec succès. + LoginButtonText : connexion + +LinkingUsersDone: + Title : Userlinking + Description : Le lien avec l'utilisateur est terminé. + CancelButtonText : annuler + NextButtonText : suivant + +ExternalNotFoundOption: + Title : Utilisateur externe + Description : Utilisateur externe non trouvé. Voulez-vous lier votre utilisateur ou enregistrer automatiquement un nouvel utilisateur. + LinkButtonText : Lier + AutoRegisterButtonText : enregistrer + TosAndPrivacyLabel : Termes et conditions + TosConfirm : J'accepte les + TosLinkText : TOS + TosConfirmAnd : et la + PrivacyLinkText : politique de confidentialité + Allemand : Deutsch + English : English + Italian : Italiano + +Footer: + PoweredBy: Promulgué par + Tos: TOS + PrivacyPolicy: Politique de confidentialité + Help: Aide + +Errors: +Internal : Une erreur interne s'est produite + AuthRequest : + NotFound : Impossible de trouver l'authrequest + UserAgentNotCorresponding : L'agent utilisateur ne correspond pas + UserAgentNotFound : L'ID de l'agent utilisateur n'a pas été trouvé + TokenNotFound : Token non trouvé + RequestTypeNotSupported : Le type de demande n'est pas pris en charge + MissingParameters : Paramètres requis manquants + User: + NotFound : L'utilisateur n'a pas pu être trouvé + Inactive : L'utilisateur est inactif + NotFoundOnOrg : L'utilisateur n'a pas été trouvé dans l'organisation choisie + NotAllowedOrg : L'utilisateur n'est pas membre de l'organisation requise + NotMatchingUserID : L'utilisateur et l'utilisateur dans l'authrequest ne correspondent pas. + UserIDMissing : UserID est vide + Invalide : Données utilisateur non valides + DomainNotAllowedAsUsername : Le domaine est déjà réservé et ne peut pas être utilisé. + NotAllowedToLink : L'utilisateur n'est pas autorisé à établir un lien avec un fournisseur de connexion externe + Password: + ConfirmationWrong : La confirmation du mot de passe est erronée + Empty : Le mot de passe est vide + Invalid : Le mot de passe n'est pas valide + InvalidAndLocked : Le mot de passe n'est pas valide et l'utilisateur est verrouillé, contactez votre administrateur. + UsernameOrPassword: + Invalid : Le nom d'utilisateur ou le mot de passe n'est pas valide + PasswordComplexityPolicy : + NotFound : Politique de mot de passe non trouvée + MinLength : Le mot de passe est trop court + HasLower : Le mot de passe doit contenir une lettre minuscule + HasUpper : Le mot de passe doit contenir une lettre majuscule + HasNumber : Le mot de passe doit contenir un numéro + HasSymbol : Le mot de passe doit contenir un symbole + Code: + Expired : Le code est expiré + Invalid : Le code n'est pas valide + Empty : Le code est vide + CryptoCodeNil : Le code cryptographique est nul + NotFound : Impossible de trouver le code + GeneratorAlgNotSupported : Algorithme de générateur non pris en charge + EmailVerify: + UserIDEmpty: L'ID utilisateur est vide + ExternalData: + CouldNotRead: Les données externes n'ont pas pu être lues correctement + MFA: + NoProviders: Aucun fournisseur multifactoriel disponible + OTP: + AlreadyReady : L'OTP multifactoriel (Mot de passe à usage unique) est déjà configuré. + NotExisting : OTP multifactoriel (Mot de passe à usage unique) n'existe pas. + InvalidCode : Code invalide + NotReady : Le système OTP multifactoriel (Mot de passe à usage unique) n'est pas prêt. + Locked: L'utilisateur est verrouillé + SomethingWentWrong: Il y a eu un problème + NotActive: L'utilisateur est inactif + ExternalIDP: + IDPTypeNotImplemented : Le type d'IDP n'est pas implémenté + NotAllowed : Le fournisseur de connexion externe n'est pas autorisé + IDPConfigIDEmpty : L'ID du fournisseur d'identité est vide + ExternalUserIDEmpty : L'ID de l'utilisateur externe est vide + UserDisplayNameEmpty : Le nom d'affichage de l'utilisateur est vide + NoExternalUserData : Aucune donnée d'utilisateur externe reçue + GrantRequired : Connexion impossible. L'utilisateur doit avoir au moins une subvention sur l'application. Veuillez contacter votre administrateur. + ProjectRequired : Connexion impossible. L'organisation de l'utilisateur doit être accordée au projet. Veuillez contacter votre administrateur. + IdentityProvider: + InvalidConfig: La configuration du fournisseur d'identité n'est pas valide + IAM: + LockoutPolicy: + NotExisting: Politique de cadenassage non existante + +optional: (facultatif) diff --git a/internal/notification/static/i18n/fr.yaml b/internal/notification/static/i18n/fr.yaml new file mode 100644 index 00000000000..80d6c1dd93b --- /dev/null +++ b/internal/notification/static/i18n/fr.yaml @@ -0,0 +1,42 @@ +InitCode: + Title: ZITADEL - Initialiser l'utilisateur + PreHeader: Initialiser l'utilisateur + Subject: Initialiser l'utilisateur + Greeting: Bonjour {{.FirstName}} {{.LastName}}, + Text: Cet utilisateur a été créé dans ZITADEL. Utilisez le nom d'utilisateur {{.PreferredLoginName}} pour vous connecter. Veuillez cliquer sur le bouton ci-dessous pour terminer le processus d'initialisation. (Code {{.Code}}) Si vous n'avez pas demandé ce courrier, veuillez l'ignorer. + ButtonText: Terminer l'initialisation +PasswordReset: + Title: ZITADEL - Réinitialiser le mot de passe + PreHeader: Réinitialiser le mot de passe + Subject: Réinitialiser le mot de passe + Greeting: Bonjour {{.FirstName}} {{.LastName}}, + Text: Nous avons reçu une demande de réinitialisation du mot de passe. Veuillez utiliser le bouton ci-dessous pour réinitialiser votre mot de passe. (Code {{.Code}}) Si vous n'avez pas demandé cet e-mail, veuillez l'ignorer. + ButtonText: Réinitialiser le mot de passe +VerifyEmail: + Title: ZITADEL - Vérifier l'email + PreHeader: Vérifier l'email + Subject: Vérifier l'email + Greeting: Bonjour {{.FirstName}} {{.LastName}}, + Text: Un nouveau courriel a été ajouté. Veuillez utiliser le bouton ci-dessous pour vérifier votre e-mail. (Code {{.Code}}) Si vous n'avez pas ajouté de nouvelle adresse e-mail, veuillez ignorer cet e-mail. + ButtonText: Vérifier l'email +VerifyPhone: + Title: ZITADEL - Vérifier le téléphone + PreHeader: Vérifier le téléphone + Subject: Vérifier le téléphone + Greeting: Bonjour {{.FirstName}} {{.LastName}}, + Text: Un nouveau numéro de téléphone a été ajouté. Veuillez utiliser le code suivant pour le vérifier {{.Code}} + ButtonText: Vérifier le téléphone +DomainClaimed: + Title: ZITADEL - Le domaine a été réclamé + PreHeader: Modifier l'email / le nom d'utilisateur + Subject: Le domaine a été réclamé + Greeting: Bonjour {{.FirstName}} {{.LastName}}, + Text: Le domaine {{.Domaine}} a été revendiqué par une organisation. Votre utilisateur actuel {{.Username}} ne fait pas partie de cette organisation. Par conséquent, vous devrez changer votre adresse électronique lors de votre connexion. Nous avons créé un nom d'utilisateur temporaire ({{.TempUsername}}) pour cette connexion. + ButtonText: Connexion +PasswordlessRegistration: + Title: ZITADEL - Ajouter une connexion sans mot de passe + PreHeader: Ajouter une connexion sans mot de passe + Subject: Ajouter une connexion sans mot de passe + Greeting: Bonjour {{.FirstName}} {{.LastName}}, + Text: Nous avons reçu une demande d'ajout d'un jeton pour la connexion sans mot de passe. Veuillez utiliser le bouton ci-dessous pour ajouter votre jeton ou dispositif pour la connexion sans mot de passe. + ButtonText: Ajouter une connexion sans mot de passe diff --git a/internal/static/i18n/en.yaml b/internal/static/i18n/en.yaml index 4e8eba4a6fd..3400a0ac2e9 100644 --- a/internal/static/i18n/en.yaml +++ b/internal/static/i18n/en.yaml @@ -70,7 +70,7 @@ Errors: Profile: NotFound: Profile not found NotChanged: Profile not changed - Invalid: Profildata invalid + Invalid: Profile data invalid Email: NotFound: Email not found Invalid: Email is invalid @@ -156,7 +156,7 @@ Errors: DomainNotVerified: Domain is not verified DomainAlreadyVerified: Domain is already verified DomainVerificationTypeInvalid: Domain verification type is invalid - DomainVerificationMissing: Domain verification not yet startet + DomainVerificationMissing: Domain verification not yet started DomainVerificationFailed: Domain verification failed PrimaryDomainNotDeletable: Primary domain must not be deleted DomainNotFound: Domain not found @@ -173,7 +173,7 @@ Errors: Domain: AlreadyExists: Domain already exists IDP: - InvalidSearchQuery: Ungültiger Suchparameter + InvalidSearchQuery: Invalid search query LoginPolicy: NotFound: Login Policy not found Invalid: Login Policy is invalid @@ -266,7 +266,7 @@ Errors: UserIDMisisng: User ID missing IAM: Member: - RolesNotChanged: Roles habe not been changed + RolesNotChanged: Roles have not been changed MemberInvalid: Member is invalid MemberAlreadyExisting: Member already exists MemberNotExisting: Member does not exist @@ -882,7 +882,7 @@ Application: Implicit: RedirectUris: CustomNotAllowed: Grant type implicit doesn't allow custom redirect uris - HttpNotAllowed: Grant tpye implicit doesn't allow http redirect uris + HttpNotAllowed: Grant type implicit doesn't allow http redirect uris HttpLocalhostOnlyForNative: Http://localhost redirect uri is only allowed for native applications. Native: AuthMethodType: diff --git a/internal/static/i18n/fr.yaml b/internal/static/i18n/fr.yaml new file mode 100644 index 00000000000..1fe8fc24e4c --- /dev/null +++ b/internal/static/i18n/fr.yaml @@ -0,0 +1,928 @@ +Errors: + Internal : Une erreur interne s'est produite + NoChangesFound : Aucun changement + OriginNotAllowed : Cette "Origine" n'est pas autorisée + IDMissing : ID manquant + ResourceOwnerMissing : Organisation du propriétaire de la ressource manquante + RemoveFailed : N'a pas pu être supprimé + ProjectionName : + Invalid : Nom de projection non valide + Assets: + EmptyKey: La clé de l'actif est vide + Store: + NotInitialized : Le stockage des actifs n'est pas initialisé + NotConfigured : Le stockage des actifs n'est pas configuré + Bucket: + Internal : Erreur interne lors de la création d'un bucket + AlreadyExists : Bucket déjà existant + CreateFailed : Bucket non créé + ListFailed : Les buckets n'ont pas pu être lus + RemoveFailed : Bucket non supprimé + SetPublicFailed : Impossible de définir le bucket comme public + Object: + PutFailed : Objet non créé + GetFailed : L'objet n'a pas pu être lu + NotFound : L'objet n'a pas pu être trouvé + PresignedTokenFailed : Le jeton signé n'a pas pu être créé + ListFailed : Objectlist n'a pas pu être lu + RemoveFailed : L'objet n'a pas pu être retiré + Limit : + ExceedsDefault : La limite dépasse la limite par défaut + Language : + NotParsed : Impossible d'analyser la langue + OIDCSettings : + NotFound : Configuration OIDC non trouvée + AlreadyExists : La configuration OIDC existe déjà + SecretGenerator : + AlreadyExists : Le générateur de secrets existe déjà + TypeMissing : Type de générateur de secret manquant + NotFound : Générateur de secret non trouvé + SMSConfig: + NotFound : Configuration SMS non trouvée + AlreadyActive : Configuration SMS déjà active + AlreadyDeactivated : Configuration SMS déjà désactivée + SMTPConfig : + NotFound : Configuration SMTP non trouvée + AlreadyExists : La configuration SMTP existe déjà + SenderAdressNotCustomDomain : L'adresse de l'expéditeur doit être configurée comme un domaine personnalisé sur l'instance. + Notification : + NoDomain : Aucun domaine trouvé pour le message + User : + NotFound : L'utilisateur n'a pas été trouvé + AlreadyExists : L'utilisateur existe déjà + NotFoundOnOrg : L'utilisateur n'a pas été trouvé dans l'organisation choisie + NotAllowedOrg : L'utilisateur n'est pas membre de l'organisation requise + UserIDMissing : L'ID de l'utilisateur est manquant + DomainPolicyNil : La politique de l'organisation est vide + EmailAsUsernameNotAllowed : L'email n'est pas autorisé comme nom d'utilisateur + Invalid : Les données de l'utilisateur ne sont pas valides + DomainNotAllowedAsUsername : Le domaine est déjà réservé et ne peut être utilisé. + AlreadyInactive : L'utilisateur est déjà inactif + NotInactive : L'utilisateur n'est pas inactif + CantDeactivateInitial : L'utilisateur avec l'état initial peut seulement être supprimé, pas désactivé. + ShouldBeActiveOrInitial : L'utilisateur n'est pas actif ou initial + AlreadyInitialised : L'utilisateur est déjà initialisé + NotInitialised : L'utilisateur n'est pas encore initialisé + NotLocked : L'utilisateur n'est pas verrouillé + NoChanges : Aucun changement trouvé + InitCodeNotFound : Code d'initialisation non trouvé + UsernameNotChanged : Nom d'utilisateur non modifié + Profile : + NotFound : Profil non trouvé + NotChanged : Le profil n'a pas changé + Invalid : Données de profil non valides + Email : + NotFound : Email non trouvé + Invalide : L'email n'est pas valide + AlreadyVerified : L'adresse électronique est déjà vérifiée + NotChanged : L'adresse électronique n'a pas changé + Phone : + Notfound : Téléphone non trouvé +Invalid : Le téléphone n'est pas valide + AlreadyVerified : Téléphone déjà vérifié + Adress : + NotFound : Adresse non trouvée + NotChanged : L'adresse n'a pas changé + Machine : + Key : + NotFound : Clé de la machine non trouvée + PAT : + NotFound : Token d'accès personnel non trouvé + NotHuman : L'utilisateur doit être personnel + NotMachine : L'utilisateur doit être technique + WrongType : Non autorisé pour ce type d'utilisateur + NotAllowedToLink : L'utilisateur n'est pas autorisé à établir un lien avec un fournisseur de connexion externe. + Username : + AlreadyExists : Nom d'utilisateur déjà pris + Reservied : Le nom d'utilisateur est déjà pris + Code : + Empty : Le code est vide + NotFound : Code non trouvé + Expired : Le code est expiré + GeneratorAlgNotSupported : Algorithme de générateur non pris en charge + Password : + NotFound : Mot de passe non trouvé + Empty : Le mot de passe est vide + Invalid : Le mot de passe n'est pas valide + NotSet : L'utilisateur n'a pas défini de mot de passe + PasswordComplexityPolicy : + NotFound : Politique de mot de passe non trouvée + MinLength : Le mot de passe est trop court + MinLengthNotAllowed : La longueur minimale indiquée n'est pas autorisée + HasLower : Le mot de passe doit contenir des minuscules + HasUpper : Le mot de passe doit contenir des majuscules + HasNumber : Le mot de passe doit contenir un numéro + HasSymbol : Le mot de passe doit contenir un symbole + ExternalIDP: + Invalid: IDP Externer invalide + IDPConfigNotExisting : Le fournisseur IDP n'est pas valide pour cette organisation + NotAllowed : IDP externe non autorisé pour cette organisation + MinimumExternalIDPNeeded : Au moins un IDP doit être ajouté + AlreadyExists : External IDP déjà pris + NotFound : IDP externe non trouvé + MFA : + OTP : + AlreadyReady : L'OTP (mot de passe à usage unique) multifactoriel est déjà configuré. + NotExisting : OTP multifactoriel (mot de passe à usage unique) n'existe pas. + NotReady : OTP multifactoriel (mot de passe à usage unique) n'est pas prêt. + InvalidCode : Code invalide + U2F : + NotExisting : L'U2F n'existe pas + Sans mot de passe : + NotExisting : Passwordless n'existe pas + WebAuthN : + NotFound : Le token WebAuthN n'a pas été trouvé + BeginRegisterFailed : L'enregistrement de WebAuthN a échoué + MarshalError : Erreur sur les données marshal + ErrorOnParseCredential : Erreur lors de l'analyse des données d'identification + CreateCredentialFailed : Erreur lors de la création d'informations d'identification + BeginLoginFailed : Echec de la connexion WebAuthN + ValidateLoginFailed : Erreur lors de la validation des informations d'identification + CloneWarning : Les informations d'identification peuvent être clonées + RefreshToken : + Invalid : Le jeton de rafraîchissement n'est pas valide + NotFound : Jeton de rafraîchissement non trouvé + Org: + AlreadyExists : Le nom de l'organisation est déjà pris + Invalid : L'organisation n'est pas valide + AlreadyDeactivated : L'organisation est déjà désactivée + AlreadyActive : L'organisation est déjà active + Empty : L'organisation est vide + NotFound : Organisation non trouvée + NotChanged : L'organisation n'a pas changé + InvalidDomain : Domaine non valide + DomainMissing : Domaine manquant + DomainNotOnOrg : Le domaine n'existe pas dans l'organisation + DomainNotVerified : Le domaine n'est pas vérifié + DomainAlreadyVerified : Le domaine est déjà vérifié + DomainVerificationTypeInvalid : Le type de vérification du domaine n'est pas valide + DomainVerificationMissing : La vérification du domaine n'a pas encore commencé + DomainVerificationFailed : La vérification du domaine a échoué + PrimaryDomainNotDeletable : Le domaine primaire ne doit pas être supprimé + DomainNotFound : Domaine non trouvé + MemberIDMissing : ID du membre manquant + MemberNotFound : Membre de l'organisation non trouvé + InvalidMember : Le membre de l'organisation n'est pas valide + UserIDMissing : ID utilisateur manquant + PolicyAlreadyExists : La politique existe déjà + PolicyNotExisting : La politique n'existe pas + IdpInvalid : La configuration IDP n'est pas valide + IdpNotExisting : La configuration IDP n'existe pas + OIDCConfigInvalid : La configuration IDP de l'OIDC n'est pas valide + IdpIsNotOIDC : La configuration IDP n'est pas de type oidc + Domain: + AlreadyExists: Le domaine existe déjà + IDP: +InvalidSearchQuery : Paramètre de recherche non valide + LoginPolicy : + NotFound : Politique de connexion non trouvée + Invalid : La politique de connexion n'est pas valide + RedirectURIInvalid : L'URI de redirection par défaut n'est pas valide + NotExisting : La politique de connexion n'existe pas + AlreadyExists : La politique de connexion existe déjà + IdpProviderAlreadyExisting : Idp Provider existe déjà + IdpProviderNotExisting : Idp Provider non existant + RegistrationNotAllowed : L'enregistrement n'est pas autorisé + UsernamePasswordNotAllowed : La connexion avec le nom d'utilisateur et le mot de passe n'est pas autorisée + MFA: + AlreadyExists : Le multifacteur existe déjà + NotExisting : Multifacteur non existant + Non spécifié : Multifacteur non valide + MailTemplate : + NotFound : Default Mail Template not found + NotChanged : Default Mail Template n'a pas été modifié + AlreadyExists : Default Mail Template existe déjà + Invalid : Le modèle de courrier par défaut n'est pas valide + CustomMessageText : + NotFound : Le texte du message par défaut n'a pas été trouvé + NotChanged : Le texte du message par défaut n'a pas été modifié + AlreadyExists : Le texte du message par défaut existe déjà + Invalid : Le texte du message par défaut n'est pas valide + PasswordComplexityPolicy : + NotFound : Politique de complexité des mots de passe non trouvée + Empty : La politique de complexité des mots de passe est vide + NotExisting : La politique de complexité des mots de passe n'existe pas + AlreadyExists : La politique de complexité des mots de passe existe déjà + PasswordLockoutPolicy : + NotFound : La politique de verrouillage du mot de passe n'a pas été trouvée + Empty : La politique de verrouillage des mots de passe est vide + NotExisting : La politique de verrouillage du mot de passe n'existe pas + AlreadyExists : La politique de verrouillage du mot de passe existe déjà + PasswordAgePolicy : + NotFound : La politique d'âge du mot de passe n'a pas été trouvée + Empty : La politique d'âge du mot de passe est vide + NotExisting : La politique d'âge des mots de passe n'existe pas + AlreadyExists : La politique relative à l'âge du mot de passe existe déjà + OrgIAMPolicy: + Empty : La politique IAM d'Org est vide + NotExisting : La politique Org IAM n'existe pas + AlreadyExists : La politique IAM d'Org existe déjà + Project : + ProjectIDMissing : Id de projet manquant + AlreadyExists : Le projet existe déjà dans l'organisation + OrgNotExisting : L'organisation n'existe pas + UserNotExisting : L'utilisateur n'existe pas + CouldNotGenerateClientSecret : Impossible de générer le secret du client. + Invalid : Le projet n'est pas valide + NotActive : Le projet n'est pas actif + NotInactive : Le projet n'est pas désactivé + NotFound : Projet non trouvé + UserIDMissing : ID utilisateur manquant + Member: + Notfound : Membre du projet non trouvé + Invalide : Le membre du projet n'est pas valide + AlreadyExists : Le membre du projet existe déjà + NotExisting : Le membre du projet n'existe pas + MinimumOneRoleNeeded : Au moins un rôle doit être ajouté + Role : + AlreadyExists : Le rôle existe déjà + Invalide : Le rôle n'est pas valide + NotExisting : Le rôle n'existe pas + IDMissing : ID manquant + App : + AlreadyExists : L'application existe déjà + NotFound : Application non trouvée + Invalid : Application invalide + NotExisting : L'application n'existe pas + NotActive : L'application n'est pas active + NotInactive : L'application n'est pas inactive + OIDCConfigInvalid : La configuration de l'OIDC n'est pas valide + APIConfigInvalid : La configuration de l'API n'est pas valide + IsNotOIDC : L'application n'est pas de type oidc + IsNotAPI : L'application n'est pas de type API + OIDCAuthMethodNoSecret : La méthode d'authentification OIDC choisie ne nécessite pas de secret. + APIAuthMethodNoSecret : La méthode d'authentification API choisie ne nécessite pas de secret. + AuthMethodNoPrivateKeyJWT : La méthode d'authentification choisie ne nécessite pas de clé. + ClientSecretInvalid : Le secret du client n'est pas valide + RequiredFieldsMissing : Certains champs obligatoires sont manquants + Grant : + AlreadyExists : La subvention du projet existe déjà + NotFound : Subvention non trouvée + Invalide : La subvention du projet n'est pas valide + NotExisting : La subvention de projet n'existe pas + HasNotExistingRole : Un rôle n'existe pas sur le projet + NotActive : La subvention de projet n'est pas active + NotInactive : La subvention du projet n'est pas inactive + UserIDMisisng : ID utilisateur manquant + IAM: + Member: + RolesNotChanged : Les rôles n'ont pas été modifiés + MemberInvalid : Le membre n'est pas valide + MemberAlreadyExisting : Le membre existe déjà + MemberNotExisting : Le membre n'existe pas + IDMissing : Id manquant + IAMProjectIDMissing : Id de projet IAM manquant + IamProjectAlreadySet : L'identifiant du projet IAM a déjà été défini + IdpInvalid : La configuration IDP n'est pas valide + IdpNotExisting : La configuration IDP n'existe pas + OIDCConfigInvalid : La configuration IDP de l'OIDC n'est pas valide + IdpIsNotOIDC : La configuration IDP n'est pas de type oidc + LoginPolicyInvalid : La politique de connexion n'est pas valide + LoginPolicyNotExisting : La politique de connexion n'existe pas + IdpProviderInvalid : Idp Provider est invalide + LoginPolicy : + NotFound : La politique de connexion par défaut n'a pas été trouvée + NotChanged : La politique de connexion par défaut n'a pas été modifiée + NotExisting : La politique de connexion par défaut n'existe pas + AlreadyExists : La politique de connexion par défaut existe déjà + RedirectURIInvalid : L'URI de redirection par défaut n'est pas valide + MFA: + AlreadyExists : Le multifacteur existe déjà + NotExisting : Multifacteur non existant + Non spécifié : Multifacteur invalide + IDP : + AlreadyExists : Le fournisseur d'identité existe déjà + NotExisting : Le fournisseur d'identité n'existe pas + Invalid : Le fournisseur d'identité n'est pas valide + IDPConfig : + AlreadyExists : La configuration du fournisseur d'identité existe déjà + NotInactive : La configuration du fournisseur d'identité n'est pas inactive + NotActive : La configuration du fournisseur d'identité n'est pas active + LabelPolicy : + NotFound : Politique d'étiquetage privé par défaut non trouvée + NotChanged : La politique de label privé par défaut n'a pas été modifiée + MailTemplate : + NotFound : Default Mail Template not found + NotChanged : Le modèle de courrier par défaut n'a pas été modifié + AlreadyExists : Default Mail Template existe déjà + Invalid : Le modèle de courrier par défaut n'est pas valide + CustomMessageText : + NotFound : Le texte du message par défaut n'a pas été trouvé + NotChanged : Le texte du message par défaut n'a pas été modifié + AlreadyExists : Le texte du message par défaut existe déjà + Invalid : Le texte du message par défaut n'est pas valide + PasswordComplexityPolicy : + NotFound : Politique de complexité des mots de passe par défaut non trouvée + NotExisting : La politique de complexité des mots de passe par défaut n'existe pas + AlreadyExists : La politique de complexité des mots de passe par défaut existe déjà + Empty : Politique de complexité des mots de passe par défaut vide + NotChanged : La politique de complexité des mots de passe par défaut n'a pas été modifiée. + PasswordAgePolicy : + NotFound : La politique d'âge du mot de passe par défaut n'a pas été trouvée + NotExisting : La politique d'âge des mots de passe par défaut n'existe pas + AlreadyExists : La politique d'âge du mot de passe par défaut existe déjà + Empty : Politique d'âge des mots de passe par défaut vide + NotChanged : La politique d'âge du mot de passe par défaut n'a pas été modifiée + PasswordLockoutPolicy : + NotFound : La politique de verrouillage du mot de passe par défaut n'a pas été trouvée + NotExisting : La politique de verrouillage du mot de passe par défaut n'existe pas + AlreadyExists : La politique de verrouillage de mot de passe par défaut existe déjà + Empty : Politique de verrouillage par mot de passe par défaut vide + NotChanged : La politique de verrouillage par mot de passe par défaut n'a pas été modifiée. + DomainPolicy : + NotFound : Politique IAM Org non trouvée + Empty : La politique Org IAM est vide + NotExisting : La politique IAM d'Org n'existe pas + AlreadyExists : La politique IAM d'Org existe déjà + NotChanged : La politique IAM d'Org n'a pas été modifiée + Policy: + AlreadyExists : La politique existe déjà + Label : + Invalid : + PrimaryColor : La couleur primaire n'est pas une valeur de couleur hexadécimale valide. + BackgroundColor : La couleur d'arrière-plan n'a pas de valeur de couleur hexadécimale valide. + WarnColor : La couleur d'avertissement n'a pas de valeur de couleur hexadécimale valide. + FontColor : La couleur de la police n'a pas de valeur de couleur Hex valide. + PrimaryColorDark : La couleur primaire (mode foncé) n'a pas de valeur de couleur Hex valide. + BackgroundColorDark : La couleur d'arrière-plan (mode foncé) n'a pas de valeur de couleur Hex valide. + WarnColorDark : La couleur d'avertissement (mode sombre) n'a pas de valeur de couleur hexadécimale valide. + FontColorDark : La couleur de la police (mode foncé) n'a pas de valeur de couleur hexadécimale valide. + UserGrant : + AlreadyExists : L'autorisation de l'utilisateur existe déjà + NotFound : Subvention d'utilisateur non trouvée + Invalid : La subvention d'utilisateur n'est pas valide + NotChanged : L'autorisation de l'utilisateur n'a pas été modifiée. + IDMissing : Id manquant + NotActive : La subvention de l'utilisateur n'est pas active + NotInactive : La subvention à l'utilisateur n'est pas désactivée + NoPermissionForProject : L'utilisateur n'a aucune autorisation pour ce projet + RoleKeyNotFound : Rôle non trouvé + Membre : + AlreadyExists : Le membre existe déjà + IDPConfig : + AlreadyExists : La configuration IDP portant ce nom existe déjà + NotExisting : La configuration du fournisseur d'identité n'existe pas + Changements : + NotFound : Aucun historique trouvé + AuditRetention : L'historique est en dehors de la rétention du journal d'audit + Token : + NotFound : Token non trouvé + UserSession : + NotFound : UserSession non trouvé + Key : + ExpireBeforeNow : La date d'expiration est dans le passé + Login : + LoginPolicy : + MFA : + ForceAndNotConfigured : Multifacteur configuré comme requis, mais aucun fournisseur possible n'est configuré. Veuillez contacter votre administrateur système. + Step : + Started : + AlreadyExists : L'étape commencée existe déjà + Done : + AlreadyExists : L'étape terminée existe déjà + CustomText : + Existe déjà : Le texte personnalisé existe déjà + Invalid : Le texte personnalisé n'est pas valide + NotFound : Le texte personnalisé n'a pas été trouvé + TranslationFile : + ReadError : Erreur de lecture du fichier de traduction + MergeError : Le fichier de traduction n'a pas pu être fusionné avec les traductions personnalisées. + NotFound : Le fichier de traduction n'existe pas + MetaData : + NotFound : Métadonnées non trouvées + NoData : La liste des métadonnées est vide + Invalid : Les métadonnées ne sont pas valides + KeyNotExisting : Une ou plusieurs clés n'existent pas + Action : + Invalid : L'action n'est pas valide + NotFound : Action non trouvée + NotActive : L'action n'est pas active + NotInactive : L'action n'est pas inactive + MaxAllowed : Aucune action active supplémentaire n'est autorisée + Flow : + FlowTypeMissing : FlowType missing + Empty : Le flux est déjà vide + WrongTriggerType : TriggerType est invalide + NoChanges : No Changes : Aucun changement + ActionIDsNotExist : Les ActionIDs n'existent pas + Query : + CloseRows : L'instruction SQL n'a pas pu être terminée + SQLStatement : L'instruction SQL n'a pas pu être créée + InvalidRequest : La requête n'est pas valide +EventTypes : + user : + added : Utilisateur ajouté + selfregistered : L'utilisateur s'est enregistré lui-même + initialization : + code : + added : Code d'initialisation généré + sent : Code d'initialisation envoyé + check : + succeeded : Vérification de l'initialisation réussie + failed : La vérification de l'initialisation a échoué + token : + added : Jeton d'accès créé + username : + reserved : Nom d'utilisateur réservé + released : Nom d'utilisateur libéré + email : + reserved : Adresse e-mail réservée + released : Adresse email libérée + changed : Adresse e-mail modifiée + verified : Adresse e-mail vérifiée + verification : + failed : La vérification de l'adresse e-mail a échoué + code : + added : Code de vérification de l'adresse e-mail généré + sent : Code de vérification de l'adresse e-mail envoyé + machine : + added : Utilisateur technique ajouté + changed : Changement d'utilisateur technique + key : + added : Clé ajoutée + removed : Clé supprimée + human : + added : Personne ajoutée + selfregistered : La personne s'est enregistrée elle-même + avatar : + added : Avatar ajouté + removed : Avatar supprimé + initialization : + code : + added : Code d'initialisation généré + sent : Code d'initialisation envoyé + check : + succeeded : Vérification de l'initialisation réussie + failed : La vérification de l'initialisation a échoué + username : + reserved : Nom d'utilisateur réservé + released : Nom d'utilisateur libéré + email : + changed : Adresse e-mail modifiée + verified : Adresse e-mail vérifiée + verification : + failed : La vérification de l'adresse e-mail a échoué + code: + added : Code de vérification de l'adresse e-mail généré + sent : Code de vérification de l'adresse e-mail envoyé + machine : + added : Utilisateur technique ajouté + changed : Changement d'utilisateur technique + key : + added : Clé ajoutée + removed : Clé supprimée + humain : + added : Personne ajoutée + selfregistered : La personne s'est enregistrée elle-même + avatar : + added : Avatar ajouté + removed : Avatar supprimé + initialization : + code : + added : Code d'initialisation généré + sent : Code d'initialisation envoyé + check : + succeeded : Vérification de l'initialisation réussie + failed : La vérification de l'initialisation a échoué + username : + reserved : Nom d'utilisateur réservé + released : Nom d'utilisateur libéré + email : + changed : Adresse e-mail modifiée + verified : Adresse e-mail vérifiée + verification : + failed : La vérification de l'adresse e-mail a échoué + code : + added : Code de vérification de l'adresse e-mail généré + sent : Code de vérification de l'adresse e-mail envoyé + password : + changed : Mot de passe modifié + code : + added : Code de mot de passe généré + sent : Code du mot de passe envoyé + verified : + succeeded : Vérification du mot de passe réussie + failed : La vérification du mot de passe a échoué + external login : + verification : + succeeded : Connexion externe réussie + externalidp : + added : Externer IDP ajouté + removed : Externer IDP supprimé + cascade : + removed : Externer IDP cascade supprimé + Phone : + changed : Le numéro de téléphone a changé + verified : Numéro de téléphone vérifié + verification : + failed : La vérification du numéro de téléphone a échoué + code : + added : Code du numéro de téléphone généré + sent : Code du numéro de téléphone envoyé + removed : Numéro de téléphone supprimé + profile : + changed : Profil de l'utilisateur modifié + adresse : + changed : L'adresse de l'utilisateur a changé + mfa : + otp : + added : OTP multifacteur ajouté + verfied : OTP multifactoriel vérifié + removed : OTP multifactorielle supprimée + verified : + succeeded : Vérification de l'OTP multifactorielle réussie + failed : La vérification de l'OTP multifactorielle a échoué + u2f : + jeton : + added : Ajout d'un jeton U2F multifacteur + verified : Jeton U2F multifactor vérifié + removed : Jeton U2F multifactoriel retiré + start : + login : Vérification U2F multifactoriel commencée + verified : + succeeded : Vérification multifactorielle U2F réussie + failed : La vérification multifactorielle U2F a échoué + signcount : + changed : La somme de contrôle du jeton Multifactor U2F a été modifiée. + init : + skipped : L'initialisation du multifacteur a été ignorée + passwordless : + token : + added : Jeton pour la connexion sans mot de passe ajouté + verified : Jeton pour la connexion sans mot de passe vérifié + removed : Jeton de connexion sans mot de passe supprimé + start : + login : Vérification de la connexion sans mot de passe commencée + verification : + succeeded : Vérification de la connexion sans mot de passe réussie + failed : La vérification de la connexion sans mot de passe a échoué + signcount : + changed : La somme de contrôle du jeton de connexion sans mot de passe a été modifiée. + initialization : + code : + added : Ajout du code d'initialisation sans mot de passe + sent : Code d'initialisation sans mot de passe envoyé + requested : Code d'initialisation sans mot de passe demandé + check : + succeeded : Code d'initialisation sans mot de passe vérifié avec succès + failed : La vérification du code d'initialisation sans mot de passe a échoué + signed : + out : L'utilisateur s'est déconnecté + refresh : + token : + added : Création d'un jeton de rafraîchissement + renewed : Rafraîchissement d'un jeton renouvelé + removed : Jeton d'actualisation supprimé + locked : Utilisateur verrouillé + unlocked : Utilisateur déverrouillé + deactivated : Utilisateur désactivé + reactivated : Utilisateur réactivé + removed : Utilisateur supprimé + password : + changed : Mot de passe modifié + code : + added : Code du mot de passe généré + sent : Code du mot de passe envoyé + check : + succeeded : Vérification du mot de passe réussie + failed : La vérification du mot de passe a échoué + phone: + changed : Le numéro de téléphone a changé + verified : Numéro de téléphone vérifié + verification : + failed : La vérification du numéro de téléphone a échoué + code : + added : Code du numéro de téléphone généré + sent : Code du numéro de téléphone envoyé + profil : + changed : Profil de l'utilisateur modifié + adresse : + changed : L'adresse de l'utilisateur a changé + mfa : + otp : + added : OTP multifacteur ajouté + verified : OTP multifactoriel vérifié + removed : OTP multifactorielle supprimée + verified : + succeeded : Vérification de l'OTP multifactorielle réussie + failed : Échec de la vérification de l'OTP multifactorielle + init : + skipped : L'initialisation du multifacteur a été ignorée + signed : + out : L'utilisateur s'est déconnecté + grant : + added : Autorisation ajoutée + changed : Autorisation modifiée + removed : Autorisation supprimée + deactivated : Autorisation désactivée + reactivated : Autorisation réactivée + reserved : Autorisation réservée + released : Autorisation validée + cascade : + removed : Autorisation supprimée + changed : Autorisation modifiée + MetaData : + set : Ensemble de métadonnées de l'utilisateur + removed : Métadonnées de l'utilisateur supprimées + removed.all : Suppression de toutes les métadonnées utilisateur + org : + added : Organisation ajoutée + changed : Organisation modifiée + deactivated : Organisation désactivée + reactivated : Organisation réactivée + removed : Organisation supprimée + domain : + added : Domaine ajouté + verification : + added : Vérification du domaine ajoutée + failed : La vérification du domaine a échoué + verified : Domaine vérifié + removed : Domaine supprimé + primary : + set : Domaine primaire défini + reserved : Domaine réservé + released : Domaine libéré + name : + reserved : Nom de l'organisation réservé + released: Nom de l'organisation libéré + membre : + added : Membre de l'organisation ajouté + changed : Le membre de l'organisation a changé + removed : Membre de l'organisation supprimé + cascade : + removed : Membre de l'organisation supprimé en cascade + iam : + policy : + added : Politique système ajoutée + changed : Modification de la politique système + removed : Politique système supprimée + idp : + config : + added : Ajout de la configuration IDP + changed : Modification de la configuration IDP + removed : Suppression de la configuration IDP + deactivated : Configuration IDP désactivée + reactivated : Configuration IDP réactivée + oidc : + config : + added : Ajout de la configuration IDP de l'OIDC + changed : Modification de la configuration de l'OIDC IDP + saml : + config : + added : Configuration IDP SAML ajoutée + changed : Modification de la configuration IDP SAML + customtext : + set : Jeu de texte personnalisé + removed : Texte personnalisé supprimé + template : + removed : Modèle de texte personnalisé supprimé + policy : + login : + added : Politique de connexion ajoutée + changed : Politique de connexion modifiée + removed : Politique de connexion supprimée + idpprovider : + added : Fournisseur d'Idp ajouté à la politique de connexion + removed : Idp Provider supprimé de la politique de connexion + secondfactor : + added : Second factor ajouté à la politique de connexion + removed : Second facteur supprimé de la politique de connexion + multifactor : + added : Facteur multiple ajouté à la politique de connexion + removed : Facteur multiple supprimé de la politique de connexion + password : + complexity : + added : Ajout de la politique de complexité des mots de passe + changed : Modification de la politique de complexité des mots de passe + removed : Suppression de la politique de complexité des mots de passe + age : + added : Ajout de la politique d'ancienneté des mots de passe + changed : Modification de la politique d'ancienneté des mots de passe + removed : Suppression de la politique d'âge du mot de passe + lockout : + added : Ajout de la politique de verrouillage des mots de passe + changed : Modification de la politique de verrouillage des mots de passe + removed : Suppression de la politique de verrouillage du mot de passe + label: + added : Politique d'étiquetage ajoutée + changed : Politique d'étiquetage modifiée + activated : Label Policy activated : Politique d'étiquetage activée + removed : Politique d'étiquetage supprimée + logo : + added : Logo ajouté à la politique d'étiquetage + removed : Logo retiré de la politique d'étiquetage + sombre : + added : Logo (mode sombre) ajouté à la politique d'étiquetage + removed : Le logo (mode sombre) a été retiré de la politique d'étiquetage + icon : + added : Icône ajoutée à la politique d'étiquetage + removed : Icône supprimée de la politique d'étiquetage + dark : + added : Icône (mode sombre) ajoutée à la politique d'étiquetage + removed : Icône (mode sombre) supprimée de la politique d'étiquetage + font : + added : Police ajoutée à la politique d'étiquetage + removed : Police supprimée de la politique d'étiquetage + assets : + removed : Actifs supprimés de la politique d'étiquetage + privacy : + added : Politique de confidentialité et CGU ajoutés + changed : Politique de confidentialité et CGU modifiées + removed : Politique de confidentialité et conditions d'utilisation supprimées + flow : + trigger_actions : + set : Action set + cascade : + removed : Cascade d'actions supprimée + removed : Actions supprimées + projet : + added : Projet ajouté + changed : Projet modifié + deactivated : Projet désactivé + reactivated : Projet réactivé + removed : Projet supprimé + membre : + added : Membre du projet ajouté + changed : Membre du projet modifié + removed : Membre du projet supprimé + cascade : + removed : Membre du projet supprimé en cascade + role : + added : Rôle de projet ajouté + changed : Rôle de projet modifié + removed : Rôle du projet supprimé + grant : + added : Accès à la gestion ajouté + changed : Accès de gestion modifié + removed : Accès de gestion supprimé + deactivated : Accès de gestion désactivé + reactivated : Accès de gestion réactivé + cascade : + changed : Accès de gestion modifié + membre : + added : Membre de l'accès de gestion ajouté + changed : Membre d'accès de gestion modifié + removed : Membre d'accès de gestion supprimé + cascade : + removed : Cascade d'accès de gestion supprimée + application : + added : Application ajoutée + changed : Application modifiée + removed : Application supprimée + deactivated : Application désactivée + reactivated : Application réactivée + oidc : + secret : + verified : + check : Vérification du secret du client OIDC réussie + failed : La vérification du secret du client OIDC a échoué + key : + added : Clé d'application ajoutée + removed : Clé d'application supprimée + config : + oidc : + added : Configuration OIDC ajoutée + changed : Modification de la configuration de l'OIDC + secret : + changed : Le secret de l'OIDC a été modifié + api : + added : Configuration API ajoutée + chaged : La configuration de l'API a été modifiée + secret : + changed : Le secret de l'API a été modifié + policy : + password : + complexity : + added : Ajout de la politique de complexité des mots de passe + changed : Modification de la politique de complexité des mots de passe + age : + added : Ajout de la politique d'ancienneté des mots de passe + changed : Modification de la politique relative à l'âge du mot de passe + verrouillage : + added : Ajout de la politique de verrouillage des mots de passe + changed : Modification de la politique de verrouillage des mots de passe + iam : + setup : + started : L'installation de ZITADEL a commencé + done : Installation de ZITADEL terminée + global : + org : + set : Global org set + projet : + iam : + set : set du projet ZITADEL + membre : + added : ZITADEL membre ajouté + changed : membre de ZITADEL modifié + removed : membre ZITADEL supprimé + cascade : + removed : Membre ZITADEL supprimé en cascade + idp : + config : + added : Ajout de la configuration IDP + changed : Modification de la configuration IDP + removed : Suppression de la configuration IDP + deactivated : Configuration IDP désactivée + reactivated : Configuration IDP réactivée + oidc : + config : + added : Ajout de la configuration IDP de l'OIDC + changed : Modification de la configuration de l'OIDC IDP + saml: + config : + added : Ajout de la configuration SAML IDP + changed : Modification de la configuration de SAML IDP + policy : + login : + added : Politique de connexion par défaut ajoutée + changed : La politique de connexion par défaut a été modifiée + idpprovider : + added : Idp Provider ajouté à la politique de connexion par défaut + removed : Idp Provider supprimé de la politique de connexion par défaut + label : + added : Ajout d'une politique d'étiquetage + modifié : La politique d'étiquetage a été modifiée + activé : Politique d'étiquetage activée + logo : + added : Logo ajouté à la politique d'étiquetage + removed : Logo retiré de la politique d'étiquetage + sombre : + added : Logo (mode sombre) ajouté à la politique d'étiquetage + removed : Le logo (mode sombre) a été retiré de la politique d'étiquetage + icon : + added : Icône ajoutée à la politique d'étiquetage + removed : Icône supprimée de la politique d'étiquetage + sombre : + added : Icône (mode sombre) ajoutée à la politique d'étiquetage + removed : Icône (mode sombre) supprimée de la politique d'étiquetage + font : + added : Police ajoutée à la politique d'étiquetage + removed : Police supprimée de la politique d'étiquetage + actifs : + removed : Actifs supprimés de la politique d'étiquetage + default : + langue : + set : Langue par défaut + oidc : + settings : + added : Ajout de la configuration de l'OIDC + changed : Modification de la configuration de l'OIDC + removed : Suppression de la configuration de l'OIDC + secret : + generator : + added : Générateur de secret ajouté + changed : Générateur de secret modifié + removed : Générateur secret supprimé + smtp : + config : + added : Ajout de la configuration SMTP + changed : Modification de la configuration SMTP + password : + changed : Modification du secret de la configuration SMTP + sms : + config : + twilio : + added : ajout du fournisseur de SMS Twilio + changed : modification du fournisseur de SMS Twilio + token : + changed : Changement du jeton du fournisseur de SMS Twilio + removed : Suppression du fournisseur de SMS Twilio + activated : Activation du fournisseur de SMS Twilio + deactivated : Fournisseur de SMS Twilio désactivé + key_pair : + added : Paire de clés ajoutée + action : + added : Action ajoutée + changed : Action modifiée + deactivated : Action désactivée + reactivated : Action réactivée + removed : Action supprimée + +Application: + OIDC: + UnsupportedVersion: Votre version de l'OIDC n'est pas prise en charge + V1: + NotCompliant: Votre configuration n'est pas conforme et diffère de la norme OIDC 1.0. + NoRedirectUris: Au moins une uri de redirection doit être enregistrée. + NotAllCombinationsAreAllowed: La configuration est conforme, mais toutes les combinaisons possibles ne sont pas autorisées. + Code: + RedirectUris: + HttpOnlyForWeb: Le code de type de subvention n'autorise que les uris de redirection http pour le type d'application web. + CustomOnlyForNative: Le code du type de subvention n'autorise que les uris de redirection personnalisées pour le type d'application natif. (exemple: appname:// ) + + Implicit: + RedirectUris: + CustomNotAllowed: Le type de subvention implicite n'autorise pas les uris de redirection personnalisées + HttpNotAllowed: Grant type implicite n'autorise pas les uris de redirection http + HttpLocalhostOnlyForNative: Http://localhost redirect uri n'est autorisé que pour les applications natives. + Native: + AuthMethodType: + NotNone: Les applications natives doivent avoir authmethodtype none. + RedirectUris: + MustBeHttpLocalhost: Les URI de redirection doivent commencer par votre propre protocole, http://127.0.0.1, http://[::1] ou http://localhost. + UserAgent: + AuthMethodType: + NotNone: L'agent utilisateur doit avoir authmethodtype none. + GrantType: + Refresh: + NoAuthCode: Le jeton de rafraîchissement n'est autorisé qu'en combinaison avec le code d'autorisation. From f4ae4523fa0c541f90897c8b521956af5b298d41 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Thu, 7 Jul 2022 09:20:51 +0200 Subject: [PATCH 04/17] docs: improve eventstore docs (#3905) * docs: improve eventstore docs * docs: fix broken link * docs(installation): fix broken link --- docs/docs/concepts/eventstore/overview.md | 7 ++++--- docs/docs/guides/installation/configure/configure.mdx | 2 +- docs/docs/guides/installation/run/compose.mdx | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/docs/concepts/eventstore/overview.md b/docs/docs/concepts/eventstore/overview.md index a11e288b062..8a7c9a22bd1 100644 --- a/docs/docs/concepts/eventstore/overview.md +++ b/docs/docs/concepts/eventstore/overview.md @@ -22,8 +22,9 @@ The data is stored as events in an append-only log. ## Benefits -Audit: You have a built-in audit trail that tracks all changes over an unlimited period of time. -Travel back in time: With our way of storing data we can show you all of your resources at a given point in time. +- Audit: You have a built-in audit trail that tracks all changes over an unlimited period of time. +- Travel back in time: With our way of storing data we can show you all of your resources at a given point in time. +- Future Projections: It is easy to compute projections with new business logic by replaying all events since installation. ## Definitions @@ -43,7 +44,7 @@ Possible Events: ### Aggregate An aggregate consist of multiple events. All events together in will lead to the current state of the aggregate. -The aggregate can be compared with an object or a resources. +The aggregate can be compared with an object or a resources. Aggregates define transaction boundaries. ### Projections diff --git a/docs/docs/guides/installation/configure/configure.mdx b/docs/docs/guides/installation/configure/configure.mdx index 08ebf4130cf..33b9384f054 100644 --- a/docs/docs/guides/installation/configure/configure.mdx +++ b/docs/docs/guides/installation/configure/configure.mdx @@ -68,7 +68,7 @@ This is the IAM admin users login according to your configuration in the [exampl - Read more about [the login process](../../manuals/user-login). - If you want to run ZITADEL in production, you most certainly need to [customize your own domain](./custom-domain). - Check out all possible [runtime configuration properties and their defaults in the source code](https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/defaults.yaml) -- Check out all possible [setup step configuration properties and their defaults in the source code](https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/adminn/setup/steps.yaml) +- Check out all possible [setup step configuration properties and their defaults in the source code](https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/setup/steps.yaml) :::caution diff --git a/docs/docs/guides/installation/run/compose.mdx b/docs/docs/guides/installation/run/compose.mdx index 5337960fbe4..86b63263f9f 100644 --- a/docs/docs/guides/installation/run/compose.mdx +++ b/docs/docs/guides/installation/run/compose.mdx @@ -4,7 +4,7 @@ By executing the commands below, you will download the file [docker-compose.yaml ```bash # Download the docker compose example configuration. For example: -wget https://raw.githubusercontent.com/zitadel/zitadel/v2-alpha/docs/docs/guides/installation/get-started/docker-compose.yaml +wget https://raw.githubusercontent.com/zitadel/zitadel/v2-alpha/docs/docs/guides/installation/run/docker-compose.yaml # Run the database and application containers docker compose up --detach From 427d21ad45e7819494cdb252c2d2a0525561be3d Mon Sep 17 00:00:00 2001 From: Livio Spring Date: Thu, 7 Jul 2022 12:58:24 +0200 Subject: [PATCH 05/17] fix: (french) translations (#3922) --- console/src/assets/i18n/de.json | 14 +- console/src/assets/i18n/en.json | 13 +- console/src/assets/i18n/fr.json | 9 +- console/src/assets/i18n/it.json | 14 +- internal/api/ui/login/renderer.go | 3 +- internal/api/ui/login/static/i18n/de.yaml | 4 + internal/api/ui/login/static/i18n/en.yaml | 3 + internal/api/ui/login/static/i18n/fr.yaml | 362 ++-- internal/api/ui/login/static/i18n/it.yaml | 3 + .../templates/external_not_found_option.html | 2 + .../templates/external_register_overview.html | 2 + .../ui/login/static/templates/register.html | 2 + internal/i18n/i18n.go | 6 +- internal/notification/static/i18n/fr.yaml | 2 +- internal/static/i18n/de.yaml | 4 +- internal/static/i18n/en.yaml | 8 +- internal/static/i18n/fr.yaml | 1725 ++++++++--------- internal/static/i18n/it.yaml | 11 +- 18 files changed, 1096 insertions(+), 1091 deletions(-) diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index a5559b61ac5..0d54b2f0e81 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -861,8 +861,9 @@ "DEFAULTLANGUAGE": "Standardsprache", "LANGUAGE": { "de": "Deutsch", + "en": "English", "it": "Italiano", - "en": "English" + "fr": "Français" }, "SMTP": { "TITLE": "SMTP Einstellungen", @@ -1028,10 +1029,10 @@ "UNSAVED_DESCRIPTION": "Sie haben Änderungen vorgenommen ohne zu speichern. Möchten Sie jetzt speichern?", "LOCALE": "Sprachcode", "LOCALES": { - "de": "German", + "de": "Deutsch", "en": "English", - "it": "Italian", - "fr": "French" + "it": "Italiano", + "fr": "Français" }, "KEYS": { "emailVerificationDoneText": "Email Verification erfolgreich", @@ -1774,8 +1775,9 @@ }, "LANGUAGES": { "de": "Deutsch", - "it": "Italienisch", - "en": "Englisch" + "en": "English", + "it": "Italiano", + "fr": "Français" }, "MEMBER": { "ADD": "Manager hinzufügen", diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index da399ec73a8..62482e686c8 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -1028,10 +1028,10 @@ "UNSAVED_DESCRIPTION": "Your have made changes without saving. Do you want to save now?", "LOCALE": "Locale Code", "LOCALES": { - "de": "German", + "de": "Deutsch", "en": "English", - "it": "Italian", - "fr": "French" + "it": "Italiano", + "fr": "Français" }, "KEYS": { "emailVerificationDoneText": "Email verification done", @@ -1773,9 +1773,10 @@ "3": "Other" }, "LANGUAGES": { - "de": "German", - "it": "Italian", - "en": "English" + "de": "Deutsch", + "en": "English", + "it": "Italiano", + "fr": "Français" }, "MEMBER": { "ADD": "Add a Manager", diff --git a/console/src/assets/i18n/fr.json b/console/src/assets/i18n/fr.json index eaf75d891bf..70ab9a6231e 100644 --- a/console/src/assets/i18n/fr.json +++ b/console/src/assets/i18n/fr.json @@ -68,7 +68,8 @@ "PRIVACY": "Vie privée", "TOS": "Conditions de service", "OPENSHORTCUTSTOOLTIP": "Tapez ? pour afficher les raccourcis clavier", - "SETTINGS": "Paramètres" + "SETTINGS": "Paramètres", + "CUSTOMERPORTAL": "Customer Portal" }, "ACTIONS": { "ACTIONS": "Actions", @@ -860,8 +861,9 @@ "DEFAULTLANGUAGE": "Langue par défaut", "LANGUAGE": { "de": "Deutsch", + "en": "English", "it": "Italiano", - "en": "English" + "fr": "Français" }, "SMTP": { "TITLE": "Paramètres SMTP", @@ -1773,8 +1775,9 @@ }, "LANGUAGES": { "de": "Deutsch", + "en": "English", "it": "Italiano", - "en": "English" + "fr": "Français" }, "MEMBER": { "ADD": "Ajouter un manager", diff --git a/console/src/assets/i18n/it.json b/console/src/assets/i18n/it.json index f865736e82e..28bd39d4034 100644 --- a/console/src/assets/i18n/it.json +++ b/console/src/assets/i18n/it.json @@ -861,8 +861,9 @@ "DEFAULTLANGUAGE": "Lingua standard", "LANGUAGE": { "de": "Deutsch", + "en": "English", "it": "Italiano", - "en": "English" + "fr": "Français" }, "SMTP": { "TITLE": "Impostazioni SMTP", @@ -1028,10 +1029,10 @@ "UNSAVED_DESCRIPTION": "Hai fatto delle modifiche senza salvare. Vuoi salvare ora?", "LOCALE": "Codice locale", "LOCALES": { - "de": "Tedesco", - "en": "Inglese", + "de": "Deutsch", + "en": "English", "it": "Italiano", - "fr": "Francese" + "fr": "Français" }, "KEYS": { "emailVerificationDoneText": "Verifica dell'e-mail terminata con successo.", @@ -1773,9 +1774,10 @@ "3": "Altro" }, "LANGUAGES": { - "de": "Tedesco", + "de": "Deutsch", + "en": "English", "it": "Italiano", - "en": "Inglese" + "fr": "Français" }, "MEMBER": { "ADD": "Aggiungi un manager", diff --git a/internal/api/ui/login/renderer.go b/internal/api/ui/login/renderer.go index 981df771f57..2de8692f7de 100644 --- a/internal/api/ui/login/renderer.go +++ b/internal/api/ui/login/renderer.go @@ -380,7 +380,8 @@ func (l *Login) getBaseData(r *http.Request, authReq *domain.AuthRequest, title } func (l *Login) getTranslator(ctx context.Context, authReq *domain.AuthRequest) *i18n.Translator { - translator, _ := l.renderer.NewTranslator(ctx) + translator, err := l.renderer.NewTranslator(ctx) + logging.OnError(err).Warn("cannot load translator") if authReq != nil { l.addLoginTranslations(translator, authReq.DefaultTranslations) l.addLoginTranslations(translator, authReq.OrgTranslations) diff --git a/internal/api/ui/login/static/i18n/de.yaml b/internal/api/ui/login/static/i18n/de.yaml index 58963d0996f..0845b0f8130 100644 --- a/internal/api/ui/login/static/i18n/de.yaml +++ b/internal/api/ui/login/static/i18n/de.yaml @@ -208,6 +208,7 @@ RegistrationUser: German: Deutsch English: English Italian: Italiano + French: Français GenderLabel: Geschlecht Female: weiblich Male: männlich @@ -236,11 +237,13 @@ ExternalRegistrationUserOverview: German: Deutsch English: English Italian: Italiano + French: Français TosAndPrivacyLabel: Allgemeine Geschäftsbedingungen und Datenschutz TosConfirm: Ich akzeptiere die TosLinkText: AGBs TosConfirmAnd: und die PrivacyLinkText: Datenschutzerklärung + ExternalLogin: oder registriere dich mit einem externen Benutzer BackButtonText: zurück NextButtonText: speichern @@ -291,6 +294,7 @@ ExternalNotFoundOption: German: Deutsch English: English Italian: Italiano + French: Français Footer: PoweredBy: Powered By diff --git a/internal/api/ui/login/static/i18n/en.yaml b/internal/api/ui/login/static/i18n/en.yaml index 1649524476e..0f97caee77b 100644 --- a/internal/api/ui/login/static/i18n/en.yaml +++ b/internal/api/ui/login/static/i18n/en.yaml @@ -208,6 +208,7 @@ RegistrationUser: German: Deutsch English: English Italian: Italiano + French: Français GenderLabel: Gender Female: Female Male: Male @@ -236,6 +237,7 @@ ExternalRegistrationUserOverview: German: Deutsch English: English Italian: Italiano + French: Français TosAndPrivacyLabel: Terms and conditions TosConfirm: I accept the TosLinkText: TOS @@ -292,6 +294,7 @@ ExternalNotFoundOption: German: Deutsch English: English Italian: Italiano + French: Français Footer: PoweredBy: Powered By diff --git a/internal/api/ui/login/static/i18n/fr.yaml b/internal/api/ui/login/static/i18n/fr.yaml index b53e61dc31f..a1671a8086e 100644 --- a/internal/api/ui/login/static/i18n/fr.yaml +++ b/internal/api/ui/login/static/i18n/fr.yaml @@ -8,7 +8,7 @@ Login: LoginnamePlaceHolder: nom d'utilisateur@domaine ExternalUserDescription: Se connecter avec un utilisateur externe. MustBeMemberOfOrg: L'utilisateur doit être membre de l'organisation {{.OrgName}} . - RegisterButtonText: s'inscrire + RegisterButtonText: s'inscrire NextButtonText: suivant SelectAccount: @@ -38,7 +38,7 @@ Password: UsernameChange: Title: Modifier le nom d'utilisateur Description: Définissez votre nouveau nom d'utilisateur - UsernameLabel: Nom d'utilisateur : + UsernameLabel: Nom d'utilisateur CancelButtonText: annuler NextButtonText: suivant @@ -47,7 +47,7 @@ UsernameChangeDone: Description: Votre nom d'utilisateur a été changé avec succès. NextButtonText: suivant -InitPassword: +InitPassword: Title: Définir un mot de passe Description: Vous avez reçu un code, que vous devez saisir dans le formulaire ci-dessous, pour définir votre nouveau mot de passe. CodeLabel: Code @@ -107,6 +107,7 @@ InitMFADone: Description: La vérification multifactorielle a été effectuée avec succès. Le multifacteur doit être saisi à chaque connexion. NextButtonText: Suivant CancelButtonText: Annuler + MFAProvider: Provider0: OTP (Mot de passe à usage unique) Provider1: U2F (2ne facteur universel) @@ -137,162 +138,163 @@ PasswordlessPrompt: Title: Configuration sans mot de passe Description: Souhaitez-vous configurer une connexion sans mot de passe ? DescriptionInit: Vous devez configurer la connexion sans mot de passe. Utilisez le lien qui vous a été donné pour enregistrer votre appareil. - PasswordlessButtonText : Aller sans mot de passe - NextButtonText : suivant - SkipButtonText : Passer + PasswordlessButtonText: Aller sans mot de passe + NextButtonText: suivant + SkipButtonText: Passer PasswordlessRegistration: - Title : Configuration sans mot de passe - Description : Ajoutez votre Token en fournissant un nom et en cliquant sur le bouton 'Enregistrer le jeton' ci-dessous. - TokenNameLabel : Nom du jeton / de la machine - NotSupported : WebAuthN n'est pas pris en charge par votre navigateur. Veuillez vous assurer qu'il est à jour ou utiliser un autre navigateur (par exemple Chrome, Safari, Firefox). - RegisterTokenButtonText : Register Token - ErrorRetry : Réessayer, créer un nouveau défi ou choisir une autre méthode. + Title: Configuration sans mot de passe + Description: Ajoutez votre Token en fournissant un nom et en cliquant sur le bouton 'Enregistrer le jeton' ci-dessous. + TokenNameLabel: Nom du jeton / de la machine + NotSupported: WebAuthN n'est pas pris en charge par votre navigateur. Veuillez vous assurer qu'il est à jour ou utiliser un autre navigateur (par exemple Chrome, Safari, Firefox). + RegisterTokenButtonText: Register Token + ErrorRetry: Réessayer, créer un nouveau défi ou choisir une autre méthode. PasswordlessRegistrationDone: - Title : Configuration sans mot de passe - Description : Le jeton pour le système sans mot de passe a été ajouté avec succès. - DescriptionClose : Vous pouvez maintenant fermer cette fenêtre. - NextButtonText : suivant - CancelButtonText : annuler + Title: Configuration sans mot de passe + Description: Le jeton pour le système sans mot de passe a été ajouté avec succès. + DescriptionClose: Vous pouvez maintenant fermer cette fenêtre. + NextButtonText: suivant + CancelButtonText: annuler PasswordChange: - Title : Changer le mot de passe - Description : Changez votre mot de passe. Entrez votre ancien et votre nouveau mot de passe. - OldPasswordLabel : Ancien mot de passe - NewPasswordLabel : Nouveau mot de passe - NewPasswordConfirmLabel : Confirmation du mot de passe - CancelButtonText : annuler - NextButtonText : suivant + Title: Changer le mot de passe + Description: Changez votre mot de passe. Entrez votre ancien et votre nouveau mot de passe. + OldPasswordLabel: Ancien mot de passe + NewPasswordLabel: Nouveau mot de passe + NewPasswordConfirmLabel: Confirmation du mot de passe + CancelButtonText: annuler + NextButtonText: suivant PasswordChangeDone: - Title : Changer le mot de passe - Description : Votre mot de passe a été modifié avec succès. - NextButtonText : suivant + Title: Changer le mot de passe + Description: Votre mot de passe a été modifié avec succès. + NextButtonText: suivant -PasswordResetDone : - Title : Réinitialisation du jeu de liens - Description : Vérifiez votre e-mail pour réinitialiser votre mot de passe. - NextButtonText : suivant +PasswordResetDone: + Title: Réinitialisation du jeu de liens + Description: Vérifiez votre e-mail pour réinitialiser votre mot de passe. + NextButtonText: suivant -EmailVerification : - Title : Vérification de l'email - Description : Nous vous avons envoyé un e-mail pour vérifier votre adresse. Veuillez saisir le code dans le formulaire ci-dessous. - CodeLabel : Code - NextButtonText : suivant - ResendButtonText : envoyer à nouveau +EmailVerification: + Title: Vérification de l'email + Description: Nous vous avons envoyé un e-mail pour vérifier votre adresse. Veuillez saisir le code dans le formulaire ci-dessous. + CodeLabel: Code + NextButtonText: suivant + ResendButtonText: envoyer à nouveau -EmailVerificationDone : - Title : E-Mail Verification - Description : Votre adresse électronique a été vérifiée avec succès. - NextButtonText : suivant - CancelButtonText : annuler - LoginButtonText : connexion - -RegisterOption : - Title : Options d'enregistrement - Description : Choisissez comment vous souhaitez vous enregistrer - RegisterUsernamePasswordButtonText: Avec nom d'utilisateur et mot de passe - ExternalLoginDescription : ou s'enregistrer avec un utilisateur externe +EmailVerificationDone: + Title: E-Mail Verification + Description: Votre adresse électronique a été vérifiée avec succès. + NextButtonText: suivant + CancelButtonText: annuler + LoginButtonText: connexion +RegisterOption: + Title: Options d'enregistrement + Description: Choisissez comment vous souhaitez vous enregistrer + RegisterUsernamePasswordButtonText: Avec nom d'utilisateur et mot de passe + ExternalLoginDescription: ou s'enregistrer avec un utilisateur externe RegistrationUser: - Title : Inscription - Description : Entrez vos données d'utilisateur. Votre adresse e-mail sera utilisée comme nom de connexion. - DescriptionOrgRegister : Entrez vos données d'utilisateur. - EmailLabel : E-Mail - UsernameLabel : Username - FirstnameLabel : Firstname - LastnameLabel : Nom de famille - LangueLabel : Language : Langue - German : Deutsch - English : English - Italian : Italiano - GenderLabel : Genre - Female : Femme - Male : Homme - Diverse : divers / X - PasswordLabel : Mot de passe - PasswordConfirmLabel : Confirmation du mot de passe - TosAndPrivacyLabel : Termes et conditions - TosConfirm : J'accepte les - TosLinkText : TOS - TosConfirmAnd : et la - PrivacyLinkText : politique de confidentialité - ExternalLogin : ou m'inscrire avec un utilisateur externe - BackButtonText : retour - NextButtonText : suivant - + Title: Inscription + Description: Entrez vos données d'utilisateur. Votre adresse e-mail sera utilisée comme nom de connexion. + DescriptionOrgRegister: Entrez vos données d'utilisateur. + EmailLabel: E-Mail + UsernameLabel: Identifiant + FirstnameLabel: Prénom + LastnameLabel: Nom de famille + LanguageLabel: Langue + German: Deutsch + English: English + Italian: Italiano + French: Français + GenderLabel: Genre + Female: Femme + Male: Homme + Diverse: divers / X + PasswordLabel: Mot de passe + PasswordConfirmLabel: Confirmation du mot de passe + TosAndPrivacyLabel: Termes et conditions + TosConfirm: J'accepte les + TosLinkText: TOS + TosConfirmAnd: et la + PrivacyLinkText: politique de confidentialité + ExternalLogin: ou m'inscrire avec un utilisateur externe + BackButtonText: retour + NextButtonText: suivant ExternalRegistrationUserOverview: - Title : Enregistrement des utilisateurs externes - Description : Nous avons pris vos coordonnées d'utilisateur auprès du fournisseur sélectionné. Vous pouvez maintenant les modifier ou les compléter. - EmailLabel : E-Mail - UsernameLabel : Identifiant - FirstnameLabel : Prénom - LastnameLabel : Nom - NicknameLabel : Surnom - PhoneLabel : Numéro de téléphone - LangueLabel : Language : Langue - German : Deutsch - English : English - Italian : Italiano - TosAndPrivacyLabel : Termes et conditions - TosConfirm : J'accepte les - TosLinkText : TOS - TosConfirmAnd : et la - PrivacyLinkText : politique de confidentialité - ExternalLogin : ou m'inscrire avec un utilisateur externe - BackButtonText : retour - NextButtonText : enregistrer + Title: Enregistrement des utilisateurs externes + Description: Nous avons pris vos coordonnées d'utilisateur auprès du fournisseur sélectionné. Vous pouvez maintenant les modifier ou les compléter. + EmailLabel: E-Mail + UsernameLabel: Identifiant + FirstnameLabel: Prénom + LastnameLabel: Nom de famille + NicknameLabel: Surnom + PhoneLabel: Numéro de téléphone + LanguageLabel: Langue + German: Deutsch + English: English + Italian: Italiano + French: Français + TosAndPrivacyLabel: Termes et conditions + TosConfirm: J'accepte les + TosLinkText: TOS + TosConfirmAnd: et la + PrivacyLinkText: politique de confidentialité + ExternalLogin: ou m'inscrire avec un utilisateur externe + BackButtonText: retour + NextButtonText: enregistrer RegistrationOrg: - Title : Enregistrement de l'organisation - Description : Entrez le nom de votre organisation et vos données d'utilisateur. - OrgNameLabel : Nom de l'organisation - EmailLabel : E-Mail - UsernameLabel : Nom d'utilisateur - FirstnameLabel : Prénom - LastnameLabel : Nom de famille - PasswordLabel : Password : Mot de passe - PasswordConfirmLabel : Confirmation du mot de passe - TosAndPrivacyLabel : Termes et conditions - TosConfirm : J'accepte les - TosLinkText : TOS - TosConfirmAnd : et la - PrivacyLinkText : politique de confidentialité - SaveButtonText : Créer une organisation + Title: Enregistrement de l'organisation + Description: Entrez le nom de votre organisation et vos données d'utilisateur. + OrgNameLabel: Nom de l'organisation + EmailLabel: E-Mail + UsernameLabel: Nom d'utilisateur + FirstnameLabel: Prénom + LastnameLabel: Nom de famille + PasswordLabel: Mot de passe + PasswordConfirmLabel: Confirmation du mot de passe + TosAndPrivacyLabel: Termes et conditions + TosConfirm: J'accepte les + TosLinkText: TOS + TosConfirmAnd: et la + PrivacyLinkText: politique de confidentialité + SaveButtonText: Créer une organisation LoginSuccess: - Title : Connexion réussie - AutoRedirectDescription : Vous serez automatiquement redirigé vers votre application. Si ce n'est pas le cas, cliquez sur le bouton ci-dessous. Vous pouvez ensuite fermer la fenêtre. - RedirectedDescription : Vous pouvez maintenant fermer cette fenêtre. - NextButtonText : suivant + Title: Connexion réussie + AutoRedirectDescription: Vous serez automatiquement redirigé vers votre application. Si ce n'est pas le cas, cliquez sur le bouton ci-dessous. Vous pouvez ensuite fermer la fenêtre. + RedirectedDescription: Vous pouvez maintenant fermer cette fenêtre. + NextButtonText: suivant LogoutDone: - Title : Déconnecté - Description : Vous vous êtes déconnecté avec succès. - LoginButtonText : connexion + Title: Déconnecté + Description: Vous vous êtes déconnecté avec succès. + LoginButtonText: connexion LinkingUsersDone: - Title : Userlinking - Description : Le lien avec l'utilisateur est terminé. - CancelButtonText : annuler - NextButtonText : suivant + Title: Userlinking + Description: Le lien avec l'utilisateur est terminé. + CancelButtonText: annuler + NextButtonText: suivant ExternalNotFoundOption: - Title : Utilisateur externe - Description : Utilisateur externe non trouvé. Voulez-vous lier votre utilisateur ou enregistrer automatiquement un nouvel utilisateur. - LinkButtonText : Lier - AutoRegisterButtonText : enregistrer - TosAndPrivacyLabel : Termes et conditions - TosConfirm : J'accepte les - TosLinkText : TOS - TosConfirmAnd : et la - PrivacyLinkText : politique de confidentialité - Allemand : Deutsch - English : English - Italian : Italiano + Title: Utilisateur externe + Description: Utilisateur externe non trouvé. Voulez-vous lier votre utilisateur ou enregistrer automatiquement un nouvel utilisateur. + LinkButtonText: Lier + AutoRegisterButtonText: enregistrer + TosAndPrivacyLabel: Termes et conditions + TosConfirm: J'accepte les + TosLinkText: TOS + TosConfirmAnd: et la + PrivacyLinkText: politique de confidentialité + German: Deutsch + English: English + Italian: Italiano + French: Français Footer: PoweredBy: Promulgué par @@ -301,45 +303,45 @@ Footer: Help: Aide Errors: -Internal : Une erreur interne s'est produite - AuthRequest : - NotFound : Impossible de trouver l'authrequest - UserAgentNotCorresponding : L'agent utilisateur ne correspond pas - UserAgentNotFound : L'ID de l'agent utilisateur n'a pas été trouvé - TokenNotFound : Token non trouvé - RequestTypeNotSupported : Le type de demande n'est pas pris en charge - MissingParameters : Paramètres requis manquants + Internal: Une erreur interne s'est produite + AuthRequest: + NotFound: Impossible de trouver l'authrequest + UserAgentNotCorresponding: L'agent utilisateur ne correspond pas + UserAgentNotFound: L'ID de l'agent utilisateur n'a pas été trouvé + TokenNotFound: Token non trouvé + RequestTypeNotSupported: Le type de demande n'est pas pris en charge + MissingParameters: Paramètres requis manquants User: - NotFound : L'utilisateur n'a pas pu être trouvé - Inactive : L'utilisateur est inactif - NotFoundOnOrg : L'utilisateur n'a pas été trouvé dans l'organisation choisie - NotAllowedOrg : L'utilisateur n'est pas membre de l'organisation requise - NotMatchingUserID : L'utilisateur et l'utilisateur dans l'authrequest ne correspondent pas. - UserIDMissing : UserID est vide - Invalide : Données utilisateur non valides - DomainNotAllowedAsUsername : Le domaine est déjà réservé et ne peut pas être utilisé. - NotAllowedToLink : L'utilisateur n'est pas autorisé à établir un lien avec un fournisseur de connexion externe + NotFound: L'utilisateur n'a pas pu être trouvé + Inactive: L'utilisateur est inactif + NotFoundOnOrg: L'utilisateur n'a pas été trouvé dans l'organisation choisie + NotAllowedOrg: L'utilisateur n'est pas membre de l'organisation requise + NotMatchingUserID: L'utilisateur et l'utilisateur dans l'authrequest ne correspondent pas. + UserIDMissing: UserID est vide + Invalid: Données utilisateur non valides + DomainNotAllowedAsUsername: Le domaine est déjà réservé et ne peut pas être utilisé. + NotAllowedToLink: L'utilisateur n'est pas autorisé à établir un lien avec un fournisseur de connexion externe Password: - ConfirmationWrong : La confirmation du mot de passe est erronée - Empty : Le mot de passe est vide - Invalid : Le mot de passe n'est pas valide - InvalidAndLocked : Le mot de passe n'est pas valide et l'utilisateur est verrouillé, contactez votre administrateur. + ConfirmationWrong: La confirmation du mot de passe est erronée + Empty: Le mot de passe est vide + Invalid: Le mot de passe n'est pas valide + InvalidAndLocked: Le mot de passe n'est pas valide et l'utilisateur est verrouillé, contactez votre administrateur. UsernameOrPassword: - Invalid : Le nom d'utilisateur ou le mot de passe n'est pas valide - PasswordComplexityPolicy : - NotFound : Politique de mot de passe non trouvée - MinLength : Le mot de passe est trop court - HasLower : Le mot de passe doit contenir une lettre minuscule - HasUpper : Le mot de passe doit contenir une lettre majuscule - HasNumber : Le mot de passe doit contenir un numéro - HasSymbol : Le mot de passe doit contenir un symbole + Invalid: Le nom d'utilisateur ou le mot de passe n'est pas valide + PasswordComplexityPolicy: + NotFound: Politique de mot de passe non trouvée + MinLength: Le mot de passe est trop court + HasLower: Le mot de passe doit contenir une lettre minuscule + HasUpper: Le mot de passe doit contenir une lettre majuscule + HasNumber: Le mot de passe doit contenir un numéro + HasSymbol: Le mot de passe doit contenir un symbole Code: - Expired : Le code est expiré - Invalid : Le code n'est pas valide - Empty : Le code est vide - CryptoCodeNil : Le code cryptographique est nul - NotFound : Impossible de trouver le code - GeneratorAlgNotSupported : Algorithme de générateur non pris en charge + Expired: Le code est expiré + Invalid: Le code n'est pas valide + Empty: Le code est vide + CryptoCodeNil: Le code cryptographique est nul + NotFound: Impossible de trouver le code + GeneratorAlgNotSupported: Algorithme de générateur non pris en charge EmailVerify: UserIDEmpty: L'ID utilisateur est vide ExternalData: @@ -347,22 +349,22 @@ Internal : Une erreur interne s'est produite MFA: NoProviders: Aucun fournisseur multifactoriel disponible OTP: - AlreadyReady : L'OTP multifactoriel (Mot de passe à usage unique) est déjà configuré. - NotExisting : OTP multifactoriel (Mot de passe à usage unique) n'existe pas. - InvalidCode : Code invalide - NotReady : Le système OTP multifactoriel (Mot de passe à usage unique) n'est pas prêt. + AlreadyReady: L'OTP multifactoriel (Mot de passe à usage unique) est déjà configuré. + NotExisting: OTP multifactoriel (Mot de passe à usage unique) n'existe pas. + InvalidCode: Code invalide + NotReady: Le système OTP multifactoriel (Mot de passe à usage unique) n'est pas prêt. Locked: L'utilisateur est verrouillé SomethingWentWrong: Il y a eu un problème NotActive: L'utilisateur est inactif ExternalIDP: - IDPTypeNotImplemented : Le type d'IDP n'est pas implémenté - NotAllowed : Le fournisseur de connexion externe n'est pas autorisé - IDPConfigIDEmpty : L'ID du fournisseur d'identité est vide - ExternalUserIDEmpty : L'ID de l'utilisateur externe est vide - UserDisplayNameEmpty : Le nom d'affichage de l'utilisateur est vide - NoExternalUserData : Aucune donnée d'utilisateur externe reçue - GrantRequired : Connexion impossible. L'utilisateur doit avoir au moins une subvention sur l'application. Veuillez contacter votre administrateur. - ProjectRequired : Connexion impossible. L'organisation de l'utilisateur doit être accordée au projet. Veuillez contacter votre administrateur. + IDPTypeNotImplemented: Le type d'IDP n'est pas implémenté + NotAllowed: Le fournisseur de connexion externe n'est pas autorisé + IDPConfigIDEmpty: L'ID du fournisseur d'identité est vide + ExternalUserIDEmpty: L'ID de l'utilisateur externe est vide + UserDisplayNameEmpty: Le nom d'affichage de l'utilisateur est vide + NoExternalUserData: Aucune donnée d'utilisateur externe reçue + GrantRequired: Connexion impossible. L'utilisateur doit avoir au moins une subvention sur l'application. Veuillez contacter votre administrateur. + ProjectRequired: Connexion impossible. L'organisation de l'utilisateur doit être accordée au projet. Veuillez contacter votre administrateur. IdentityProvider: InvalidConfig: La configuration du fournisseur d'identité n'est pas valide IAM: diff --git a/internal/api/ui/login/static/i18n/it.yaml b/internal/api/ui/login/static/i18n/it.yaml index d38a804148a..16ad382267b 100644 --- a/internal/api/ui/login/static/i18n/it.yaml +++ b/internal/api/ui/login/static/i18n/it.yaml @@ -208,6 +208,7 @@ RegistrationUser: German: Deutsch English: English Italian: Italiano + French: Français GenderLabel: Genere Female: Femminile Male: Maschile @@ -236,6 +237,7 @@ ExternalRegistrationUserOverview: German: Deutsch English: English Italian: Italiano + French: Français TosAndPrivacyLabel: Termini di servizio TosConfirm: Accetto i TosLinkText: Termini di servizio @@ -292,6 +294,7 @@ ExternalNotFoundOption: German: Deutsch English: English Italian: Italiano + French: Français Footer: PoweredBy: Alimentato da diff --git a/internal/api/ui/login/static/templates/external_not_found_option.html b/internal/api/ui/login/static/templates/external_not_found_option.html index 837d804f223..7c4c16b747d 100644 --- a/internal/api/ui/login/static/templates/external_not_found_option.html +++ b/internal/api/ui/login/static/templates/external_not_found_option.html @@ -66,6 +66,8 @@ + diff --git a/internal/api/ui/login/static/templates/external_register_overview.html b/internal/api/ui/login/static/templates/external_register_overview.html index c572cd7e94a..3ee0690f789 100644 --- a/internal/api/ui/login/static/templates/external_register_overview.html +++ b/internal/api/ui/login/static/templates/external_register_overview.html @@ -66,6 +66,8 @@ + diff --git a/internal/api/ui/login/static/templates/register.html b/internal/api/ui/login/static/templates/register.html index e905f68eeb5..0c709aa34fa 100644 --- a/internal/api/ui/login/static/templates/register.html +++ b/internal/api/ui/login/static/templates/register.html @@ -60,6 +60,8 @@ +
diff --git a/internal/i18n/i18n.go b/internal/i18n/i18n.go index a77f3a9dda4..415197a53e5 100644 --- a/internal/i18n/i18n.go +++ b/internal/i18n/i18n.go @@ -69,7 +69,7 @@ func newBundle(dir http.FileSystem, defaultLanguage language.Tag) (*i18n.Bundle, } for _, file := range files { if err := addFileFromFileSystemToBundle(dir, bundle, file); err != nil { - return nil, errors.ThrowNotFound(err, "I18N-ZS2AW", "cannot append file to Bundle") + return nil, errors.ThrowNotFoundf(err, "I18N-ZS2AW", "cannot append file %s to Bundle", file.Name()) } } return bundle, nil @@ -85,8 +85,8 @@ func addFileFromFileSystemToBundle(dir http.FileSystem, bundle *i18n.Bundle, fil if err != nil { return err } - bundle.MustParseMessageFileBytes(content, file.Name()) - return nil + _, err = bundle.ParseMessageFileBytes(content, file.Name()) + return err } func SupportedLanguages(dir http.FileSystem) ([]language.Tag, error) { diff --git a/internal/notification/static/i18n/fr.yaml b/internal/notification/static/i18n/fr.yaml index 80d6c1dd93b..243ef649323 100644 --- a/internal/notification/static/i18n/fr.yaml +++ b/internal/notification/static/i18n/fr.yaml @@ -31,7 +31,7 @@ DomainClaimed: PreHeader: Modifier l'email / le nom d'utilisateur Subject: Le domaine a été réclamé Greeting: Bonjour {{.FirstName}} {{.LastName}}, - Text: Le domaine {{.Domaine}} a été revendiqué par une organisation. Votre utilisateur actuel {{.Username}} ne fait pas partie de cette organisation. Par conséquent, vous devrez changer votre adresse électronique lors de votre connexion. Nous avons créé un nom d'utilisateur temporaire ({{.TempUsername}}) pour cette connexion. + Text: Le domaine {{.Domain}} a été revendiqué par une organisation. Votre utilisateur actuel {{.Username}} ne fait pas partie de cette organisation. Par conséquent, vous devrez changer votre adresse électronique lors de votre connexion. Nous avons créé un nom d'utilisateur temporaire ({{.TempUsername}}) pour cette connexion. ButtonText: Connexion PasswordlessRegistration: Title: ZITADEL - Ajouter une connexion sans mot de passe diff --git a/internal/static/i18n/de.yaml b/internal/static/i18n/de.yaml index c4db789bec9..e25aed47e93 100644 --- a/internal/static/i18n/de.yaml +++ b/internal/static/i18n/de.yaml @@ -94,7 +94,7 @@ Errors: NotAllowedToLink: Der Benutzer darf nicht mit einem externen Login Provider verlinkt werden Username: AlreadyExists: Benutzername ist bereits vergeben - Reservied: Benutzername ist bereits vergeben + Reserved: Benutzername ist bereits vergeben Code: Empty: Code ist leer NotFound: Code konnte nicht gefunden werden @@ -263,7 +263,6 @@ Errors: HasNotExistingRole: Eine der Rollen existiert nicht auf dem Projekt NotActive: Projekt Grant ist nicht aktiv NotInactive: Projekt Grant ist nicht inaktiv - UserIDMisisng: User ID fehlt IAM: Member: RolesNotChanged: Rollen wurden nicht verändert @@ -870,6 +869,7 @@ EventTypes: deactivated: Aktion deaktiviert reactivated: Aktion reaktiviert removed: Aktion gelöscht + Application: OIDC: UnsupportedVersion: Deine OIDC Version wird nicht unterstützt diff --git a/internal/static/i18n/en.yaml b/internal/static/i18n/en.yaml index 3400a0ac2e9..ebd1482ddb4 100644 --- a/internal/static/i18n/en.yaml +++ b/internal/static/i18n/en.yaml @@ -94,7 +94,7 @@ Errors: NotAllowedToLink: User is not allowed to link with external login provider Username: AlreadyExists: Username already taken - Reservied: Username is already taken + Reserved: Username is already taken Code: Empty: Code is empty NotFound: Code not found @@ -263,7 +263,6 @@ Errors: HasNotExistingRole: One role doesn't exist on project NotActive: Project grant is not active NotInactive: Project grant is not inactive - UserIDMisisng: User ID missing IAM: Member: RolesNotChanged: Roles have not been changed @@ -786,7 +785,7 @@ EventTypes: changed: ZITADEL member changed removed: ZITADEL member removed cascade: - removeD: ZITADEL member cascade removed + removed: ZITADEL member cascade removed idp: config: added: IDP configuration added @@ -802,6 +801,9 @@ EventTypes: config: added: SAML IDP configuration added changed: SAML IDP configuration changed + customtext: + set: Text was set + removed: Text was removed policy: login: added: Default Login Policy added diff --git a/internal/static/i18n/fr.yaml b/internal/static/i18n/fr.yaml index 1fe8fc24e4c..3678cfe2abd 100644 --- a/internal/static/i18n/fr.yaml +++ b/internal/static/i18n/fr.yaml @@ -1,902 +1,874 @@ Errors: - Internal : Une erreur interne s'est produite - NoChangesFound : Aucun changement - OriginNotAllowed : Cette "Origine" n'est pas autorisée - IDMissing : ID manquant - ResourceOwnerMissing : Organisation du propriétaire de la ressource manquante - RemoveFailed : N'a pas pu être supprimé - ProjectionName : - Invalid : Nom de projection non valide + Internal: Une erreur interne s'est produite + NoChangesFound: Aucun changement + OriginNotAllowed: Cette "Origine" n'est pas autorisée + IDMissing: ID manquant + ResourceOwnerMissing: Organisation du propriétaire de la ressource manquante + RemoveFailed: N'a pas pu être supprimé + ProjectionName: + Invalid: Nom de projection non valide Assets: EmptyKey: La clé de l'actif est vide Store: - NotInitialized : Le stockage des actifs n'est pas initialisé - NotConfigured : Le stockage des actifs n'est pas configuré + NotInitialized: Le stockage des actifs n'est pas initialisé + NotConfigured: Le stockage des actifs n'est pas configuré Bucket: - Internal : Erreur interne lors de la création d'un bucket - AlreadyExists : Bucket déjà existant - CreateFailed : Bucket non créé - ListFailed : Les buckets n'ont pas pu être lus - RemoveFailed : Bucket non supprimé - SetPublicFailed : Impossible de définir le bucket comme public + Internal: Erreur interne lors de la création d'un bucket + AlreadyExists: Bucket déjà existant + CreateFailed: Bucket non créé + ListFailed: Les buckets n'ont pas pu être lus + RemoveFailed: Bucket non supprimé + SetPublicFailed: Impossible de définir le bucket comme public Object: - PutFailed : Objet non créé - GetFailed : L'objet n'a pas pu être lu - NotFound : L'objet n'a pas pu être trouvé - PresignedTokenFailed : Le jeton signé n'a pas pu être créé - ListFailed : Objectlist n'a pas pu être lu - RemoveFailed : L'objet n'a pas pu être retiré - Limit : - ExceedsDefault : La limite dépasse la limite par défaut - Language : - NotParsed : Impossible d'analyser la langue - OIDCSettings : - NotFound : Configuration OIDC non trouvée - AlreadyExists : La configuration OIDC existe déjà - SecretGenerator : - AlreadyExists : Le générateur de secrets existe déjà - TypeMissing : Type de générateur de secret manquant - NotFound : Générateur de secret non trouvé + PutFailed: Objet non créé + GetFailed: L'objet n'a pas pu être lu + NotFound: L'objet n'a pas pu être trouvé + PresignedTokenFailed: Le jeton signé n'a pas pu être créé + ListFailed: Objectlist n'a pas pu être lu + RemoveFailed: L'objet n'a pas pu être retiré + Limit: + ExceedsDefault: La limite dépasse la limite par défaut + Language: + NotParsed: Impossible d'analyser la langue + OIDCSettings: + NotFound: Configuration OIDC non trouvée + AlreadyExists: La configuration OIDC existe déjà + SecretGenerator: + AlreadyExists: Le générateur de secrets existe déjà + TypeMissing: Type de générateur de secret manquant + NotFound: Générateur de secret non trouvé SMSConfig: - NotFound : Configuration SMS non trouvée - AlreadyActive : Configuration SMS déjà active - AlreadyDeactivated : Configuration SMS déjà désactivée - SMTPConfig : - NotFound : Configuration SMTP non trouvée - AlreadyExists : La configuration SMTP existe déjà - SenderAdressNotCustomDomain : L'adresse de l'expéditeur doit être configurée comme un domaine personnalisé sur l'instance. - Notification : - NoDomain : Aucun domaine trouvé pour le message - User : - NotFound : L'utilisateur n'a pas été trouvé - AlreadyExists : L'utilisateur existe déjà - NotFoundOnOrg : L'utilisateur n'a pas été trouvé dans l'organisation choisie - NotAllowedOrg : L'utilisateur n'est pas membre de l'organisation requise - UserIDMissing : L'ID de l'utilisateur est manquant - DomainPolicyNil : La politique de l'organisation est vide - EmailAsUsernameNotAllowed : L'email n'est pas autorisé comme nom d'utilisateur - Invalid : Les données de l'utilisateur ne sont pas valides - DomainNotAllowedAsUsername : Le domaine est déjà réservé et ne peut être utilisé. - AlreadyInactive : L'utilisateur est déjà inactif - NotInactive : L'utilisateur n'est pas inactif - CantDeactivateInitial : L'utilisateur avec l'état initial peut seulement être supprimé, pas désactivé. - ShouldBeActiveOrInitial : L'utilisateur n'est pas actif ou initial - AlreadyInitialised : L'utilisateur est déjà initialisé - NotInitialised : L'utilisateur n'est pas encore initialisé - NotLocked : L'utilisateur n'est pas verrouillé - NoChanges : Aucun changement trouvé - InitCodeNotFound : Code d'initialisation non trouvé - UsernameNotChanged : Nom d'utilisateur non modifié - Profile : - NotFound : Profil non trouvé - NotChanged : Le profil n'a pas changé - Invalid : Données de profil non valides - Email : - NotFound : Email non trouvé - Invalide : L'email n'est pas valide - AlreadyVerified : L'adresse électronique est déjà vérifiée - NotChanged : L'adresse électronique n'a pas changé - Phone : - Notfound : Téléphone non trouvé -Invalid : Le téléphone n'est pas valide - AlreadyVerified : Téléphone déjà vérifié - Adress : - NotFound : Adresse non trouvée - NotChanged : L'adresse n'a pas changé - Machine : - Key : - NotFound : Clé de la machine non trouvée - PAT : - NotFound : Token d'accès personnel non trouvé - NotHuman : L'utilisateur doit être personnel - NotMachine : L'utilisateur doit être technique - WrongType : Non autorisé pour ce type d'utilisateur - NotAllowedToLink : L'utilisateur n'est pas autorisé à établir un lien avec un fournisseur de connexion externe. - Username : - AlreadyExists : Nom d'utilisateur déjà pris - Reservied : Le nom d'utilisateur est déjà pris - Code : - Empty : Le code est vide - NotFound : Code non trouvé - Expired : Le code est expiré - GeneratorAlgNotSupported : Algorithme de générateur non pris en charge - Password : - NotFound : Mot de passe non trouvé - Empty : Le mot de passe est vide - Invalid : Le mot de passe n'est pas valide - NotSet : L'utilisateur n'a pas défini de mot de passe - PasswordComplexityPolicy : - NotFound : Politique de mot de passe non trouvée - MinLength : Le mot de passe est trop court - MinLengthNotAllowed : La longueur minimale indiquée n'est pas autorisée - HasLower : Le mot de passe doit contenir des minuscules - HasUpper : Le mot de passe doit contenir des majuscules - HasNumber : Le mot de passe doit contenir un numéro - HasSymbol : Le mot de passe doit contenir un symbole + NotFound: Configuration SMS non trouvée + AlreadyActive: Configuration SMS déjà active + AlreadyDeactivated: Configuration SMS déjà désactivée + SMTPConfig: + NotFound: Configuration SMTP non trouvée + AlreadyExists: La configuration SMTP existe déjà + SenderAdressNotCustomDomain: L'adresse de l'expéditeur doit être configurée comme un domaine personnalisé sur l'instance. + Notification: + NoDomain: Aucun domaine trouvé pour le message + User: + NotFound: L'utilisateur n'a pas été trouvé + AlreadyExists: L'utilisateur existe déjà + NotFoundOnOrg: L'utilisateur n'a pas été trouvé dans l'organisation choisie + NotAllowedOrg: L'utilisateur n'est pas membre de l'organisation requise + UserIDMissing: L'ID de l'utilisateur est manquant + DomainPolicyNil: La politique de l'organisation est vide + EmailAsUsernameNotAllowed: L'email n'est pas autorisé comme nom d'utilisateur + Invalid: Les données de l'utilisateur ne sont pas valides + DomainNotAllowedAsUsername: Le domaine est déjà réservé et ne peut être utilisé. + AlreadyInactive: L'utilisateur est déjà inactif + NotInactive: L'utilisateur n'est pas inactif + CantDeactivateInitial: L'utilisateur avec l'état initial peut seulement être supprimé, pas désactivé. + ShouldBeActiveOrInitial: L'utilisateur n'est pas actif ou initial + AlreadyInitialised: L'utilisateur est déjà initialisé + NotInitialised: L'utilisateur n'est pas encore initialisé + NotLocked: L'utilisateur n'est pas verrouillé + NoChanges: Aucun changement trouvé + InitCodeNotFound: Code d'initialisation non trouvé + UsernameNotChanged: Nom d'utilisateur non modifié + Profile: + NotFound: Profil non trouvé + NotChanged: Le profil n'a pas changé + Invalid: Données de profil non valides + Email: + NotFound: Email non trouvé + Invalid: L'email n'est pas valide + AlreadyVerified: L'adresse électronique est déjà vérifiée + NotChanged: L'adresse électronique n'a pas changé + Phone: + Notfound: Téléphone non trouvé + Invalid: Le téléphone n'est pas valide + AlreadyVerified: Téléphone déjà vérifié + Address: + NotFound: Adresse non trouvée + NotChanged: L'adresse n'a pas changé + Machine: + Key: + NotFound: Clé de la machine non trouvée + PAT: + NotFound: Token d'accès personnel non trouvé + NotHuman: L'utilisateur doit être personnel + NotMachine: L'utilisateur doit être technique + WrongType: Non autorisé pour ce type d'utilisateur + NotAllowedToLink: L'utilisateur n'est pas autorisé à établir un lien avec un fournisseur de connexion externe. + Username: + AlreadyExists: Nom d'utilisateur déjà pris + Reserved: Le nom d'utilisateur est déjà pris + Code: + Empty: Le code est vide + NotFound: Code non trouvé + Expired: Le code est expiré + GeneratorAlgNotSupported: Algorithme de générateur non pris en charge + Password: + NotFound: Mot de passe non trouvé + Empty: Le mot de passe est vide + Invalid: Le mot de passe n'est pas valide + NotSet: L'utilisateur n'a pas défini de mot de passe + PasswordComplexityPolicy: + NotFound: Politique de mot de passe non trouvée + MinLength: Le mot de passe est trop court + MinLengthNotAllowed: La longueur minimale indiquée n'est pas autorisée + HasLower: Le mot de passe doit contenir des minuscules + HasUpper: Le mot de passe doit contenir des majuscules + HasNumber: Le mot de passe doit contenir un numéro + HasSymbol: Le mot de passe doit contenir un symbole ExternalIDP: Invalid: IDP Externer invalide - IDPConfigNotExisting : Le fournisseur IDP n'est pas valide pour cette organisation - NotAllowed : IDP externe non autorisé pour cette organisation - MinimumExternalIDPNeeded : Au moins un IDP doit être ajouté - AlreadyExists : External IDP déjà pris - NotFound : IDP externe non trouvé - MFA : - OTP : - AlreadyReady : L'OTP (mot de passe à usage unique) multifactoriel est déjà configuré. - NotExisting : OTP multifactoriel (mot de passe à usage unique) n'existe pas. - NotReady : OTP multifactoriel (mot de passe à usage unique) n'est pas prêt. - InvalidCode : Code invalide - U2F : - NotExisting : L'U2F n'existe pas - Sans mot de passe : - NotExisting : Passwordless n'existe pas - WebAuthN : - NotFound : Le token WebAuthN n'a pas été trouvé - BeginRegisterFailed : L'enregistrement de WebAuthN a échoué - MarshalError : Erreur sur les données marshal - ErrorOnParseCredential : Erreur lors de l'analyse des données d'identification - CreateCredentialFailed : Erreur lors de la création d'informations d'identification - BeginLoginFailed : Echec de la connexion WebAuthN - ValidateLoginFailed : Erreur lors de la validation des informations d'identification - CloneWarning : Les informations d'identification peuvent être clonées - RefreshToken : - Invalid : Le jeton de rafraîchissement n'est pas valide - NotFound : Jeton de rafraîchissement non trouvé + IDPConfigNotExisting: Le fournisseur IDP n'est pas valide pour cette organisation + NotAllowed: IDP externe non autorisé pour cette organisation + MinimumExternalIDPNeeded: Au moins un IDP doit être ajouté + AlreadyExists: External IDP déjà pris + NotFound: IDP externe non trouvé + MFA: + OTP: + AlreadyReady: L'OTP (mot de passe à usage unique) multifactoriel est déjà configuré. + NotExisting: OTP multifactoriel (mot de passe à usage unique) n'existe pas. + NotReady: OTP multifactoriel (mot de passe à usage unique) n'est pas prêt. + InvalidCode: Code invalide + U2F: + NotExisting: L'U2F n'existe pas + Passwordless: + NotExisting: Passwordless n'existe pas + WebAuthN: + NotFound: Le token WebAuthN n'a pas été trouvé + BeginRegisterFailed: L'enregistrement de WebAuthN a échoué + MarshalError: Erreur sur les données marshal + ErrorOnParseCredential: Erreur lors de l'analyse des données d'identification + CreateCredentialFailed: Erreur lors de la création d'informations d'identification + BeginLoginFailed: Echec de la connexion WebAuthN + ValidateLoginFailed: Erreur lors de la validation des informations d'identification + CloneWarning: Les informations d'identification peuvent être clonées + RefreshToken: + Invalid: Le jeton de rafraîchissement n'est pas valide + NotFound: Jeton de rafraîchissement non trouvé Org: - AlreadyExists : Le nom de l'organisation est déjà pris - Invalid : L'organisation n'est pas valide - AlreadyDeactivated : L'organisation est déjà désactivée - AlreadyActive : L'organisation est déjà active - Empty : L'organisation est vide - NotFound : Organisation non trouvée - NotChanged : L'organisation n'a pas changé - InvalidDomain : Domaine non valide - DomainMissing : Domaine manquant - DomainNotOnOrg : Le domaine n'existe pas dans l'organisation - DomainNotVerified : Le domaine n'est pas vérifié - DomainAlreadyVerified : Le domaine est déjà vérifié - DomainVerificationTypeInvalid : Le type de vérification du domaine n'est pas valide - DomainVerificationMissing : La vérification du domaine n'a pas encore commencé - DomainVerificationFailed : La vérification du domaine a échoué - PrimaryDomainNotDeletable : Le domaine primaire ne doit pas être supprimé - DomainNotFound : Domaine non trouvé - MemberIDMissing : ID du membre manquant - MemberNotFound : Membre de l'organisation non trouvé - InvalidMember : Le membre de l'organisation n'est pas valide - UserIDMissing : ID utilisateur manquant - PolicyAlreadyExists : La politique existe déjà - PolicyNotExisting : La politique n'existe pas - IdpInvalid : La configuration IDP n'est pas valide - IdpNotExisting : La configuration IDP n'existe pas - OIDCConfigInvalid : La configuration IDP de l'OIDC n'est pas valide - IdpIsNotOIDC : La configuration IDP n'est pas de type oidc + AlreadyExists: Le nom de l'organisation est déjà pris + Invalid: L'organisation n'est pas valide + AlreadyDeactivated: L'organisation est déjà désactivée + AlreadyActive: L'organisation est déjà active + Empty: L'organisation est vide + NotFound: Organisation non trouvée + NotChanged: L'organisation n'a pas changé + InvalidDomain: Domaine non valide + DomainMissing: Domaine manquant + DomainNotOnOrg: Le domaine n'existe pas dans l'organisation + DomainNotVerified: Le domaine n'est pas vérifié + DomainAlreadyVerified: Le domaine est déjà vérifié + DomainVerificationTypeInvalid: Le type de vérification du domaine n'est pas valide + DomainVerificationMissing: La vérification du domaine n'a pas encore commencé + DomainVerificationFailed: La vérification du domaine a échoué + PrimaryDomainNotDeletable: Le domaine primaire ne doit pas être supprimé + DomainNotFound: Domaine non trouvé + MemberIDMissing: ID du membre manquant + MemberNotFound: Membre de l'organisation non trouvé + InvalidMember: Le membre de l'organisation n'est pas valide + UserIDMissing: ID utilisateur manquant + PolicyAlreadyExists: La politique existe déjà + PolicyNotExisting: La politique n'existe pas + IdpInvalid: La configuration IDP n'est pas valide + IdpNotExisting: La configuration IDP n'existe pas + OIDCConfigInvalid: La configuration IDP de l'OIDC n'est pas valide + IdpIsNotOIDC: La configuration IDP n'est pas de type oidc Domain: AlreadyExists: Le domaine existe déjà IDP: -InvalidSearchQuery : Paramètre de recherche non valide - LoginPolicy : - NotFound : Politique de connexion non trouvée - Invalid : La politique de connexion n'est pas valide - RedirectURIInvalid : L'URI de redirection par défaut n'est pas valide - NotExisting : La politique de connexion n'existe pas - AlreadyExists : La politique de connexion existe déjà - IdpProviderAlreadyExisting : Idp Provider existe déjà - IdpProviderNotExisting : Idp Provider non existant - RegistrationNotAllowed : L'enregistrement n'est pas autorisé - UsernamePasswordNotAllowed : La connexion avec le nom d'utilisateur et le mot de passe n'est pas autorisée + InvalidSearchQuery: Paramètre de recherche non valide + LoginPolicy: + NotFound: Politique de connexion non trouvée + Invalid: La politique de connexion n'est pas valide + RedirectURIInvalid: L'URI de redirection par défaut n'est pas valide + NotExisting: La politique de connexion n'existe pas + AlreadyExists: La politique de connexion existe déjà + IdpProviderAlreadyExisting: Idp Provider existe déjà + IdpProviderNotExisting: Idp Provider non existant + RegistrationNotAllowed: L'enregistrement n'est pas autorisé + UsernamePasswordNotAllowed: La connexion avec le nom d'utilisateur et le mot de passe n'est pas autorisée MFA: - AlreadyExists : Le multifacteur existe déjà - NotExisting : Multifacteur non existant - Non spécifié : Multifacteur non valide - MailTemplate : - NotFound : Default Mail Template not found - NotChanged : Default Mail Template n'a pas été modifié - AlreadyExists : Default Mail Template existe déjà - Invalid : Le modèle de courrier par défaut n'est pas valide - CustomMessageText : - NotFound : Le texte du message par défaut n'a pas été trouvé - NotChanged : Le texte du message par défaut n'a pas été modifié - AlreadyExists : Le texte du message par défaut existe déjà - Invalid : Le texte du message par défaut n'est pas valide - PasswordComplexityPolicy : - NotFound : Politique de complexité des mots de passe non trouvée - Empty : La politique de complexité des mots de passe est vide - NotExisting : La politique de complexité des mots de passe n'existe pas - AlreadyExists : La politique de complexité des mots de passe existe déjà - PasswordLockoutPolicy : - NotFound : La politique de verrouillage du mot de passe n'a pas été trouvée - Empty : La politique de verrouillage des mots de passe est vide - NotExisting : La politique de verrouillage du mot de passe n'existe pas - AlreadyExists : La politique de verrouillage du mot de passe existe déjà - PasswordAgePolicy : - NotFound : La politique d'âge du mot de passe n'a pas été trouvée - Empty : La politique d'âge du mot de passe est vide - NotExisting : La politique d'âge des mots de passe n'existe pas - AlreadyExists : La politique relative à l'âge du mot de passe existe déjà + AlreadyExists: Le multifacteur existe déjà + NotExisting: Multifacteur non existant + Unspecified: Multifacteur non valide + MailTemplate: + NotFound: Default Mail Template not found + NotChanged: Default Mail Template n'a pas été modifié + AlreadyExists: Default Mail Template existe déjà + Invalid: Le modèle de courrier par défaut n'est pas valide + CustomMessageText: + NotFound: Le texte du message par défaut n'a pas été trouvé + NotChanged: Le texte du message par défaut n'a pas été modifié + AlreadyExists: Le texte du message par défaut existe déjà + Invalid: Le texte du message par défaut n'est pas valide + PasswordComplexityPolicy: + NotFound: Politique de complexité des mots de passe non trouvée + Empty: La politique de complexité des mots de passe est vide + NotExisting: La politique de complexité des mots de passe n'existe pas + AlreadyExists: La politique de complexité des mots de passe existe déjà + PasswordLockoutPolicy: + NotFound: La politique de verrouillage du mot de passe n'a pas été trouvée + Empty: La politique de verrouillage des mots de passe est vide + NotExisting: La politique de verrouillage du mot de passe n'existe pas + AlreadyExists: La politique de verrouillage du mot de passe existe déjà + PasswordAgePolicy: + NotFound: La politique d'âge du mot de passe n'a pas été trouvée + Empty: La politique d'âge du mot de passe est vide + NotExisting: La politique d'âge des mots de passe n'existe pas + AlreadyExists: La politique relative à l'âge du mot de passe existe déjà OrgIAMPolicy: - Empty : La politique IAM d'Org est vide - NotExisting : La politique Org IAM n'existe pas - AlreadyExists : La politique IAM d'Org existe déjà - Project : - ProjectIDMissing : Id de projet manquant - AlreadyExists : Le projet existe déjà dans l'organisation - OrgNotExisting : L'organisation n'existe pas - UserNotExisting : L'utilisateur n'existe pas - CouldNotGenerateClientSecret : Impossible de générer le secret du client. - Invalid : Le projet n'est pas valide - NotActive : Le projet n'est pas actif - NotInactive : Le projet n'est pas désactivé - NotFound : Projet non trouvé - UserIDMissing : ID utilisateur manquant + Empty: La politique IAM d'Org est vide + NotExisting: La politique Org IAM n'existe pas + AlreadyExists: La politique IAM d'Org existe déjà + Project: + ProjectIDMissing: Id de projet manquant + AlreadyExists: Le projet existe déjà dans l'organisation + OrgNotExisting: L'organisation n'existe pas + UserNotExisting: L'utilisateur n'existe pas + CouldNotGenerateClientSecret: Impossible de générer le secret du client. + Invalid: Le projet n'est pas valide + NotActive: Le projet n'est pas actif + NotInactive: Le projet n'est pas désactivé + NotFound: Projet non trouvé + UserIDMissing: ID utilisateur manquant Member: - Notfound : Membre du projet non trouvé - Invalide : Le membre du projet n'est pas valide - AlreadyExists : Le membre du projet existe déjà - NotExisting : Le membre du projet n'existe pas - MinimumOneRoleNeeded : Au moins un rôle doit être ajouté - Role : - AlreadyExists : Le rôle existe déjà - Invalide : Le rôle n'est pas valide - NotExisting : Le rôle n'existe pas - IDMissing : ID manquant - App : - AlreadyExists : L'application existe déjà - NotFound : Application non trouvée - Invalid : Application invalide - NotExisting : L'application n'existe pas - NotActive : L'application n'est pas active - NotInactive : L'application n'est pas inactive - OIDCConfigInvalid : La configuration de l'OIDC n'est pas valide - APIConfigInvalid : La configuration de l'API n'est pas valide - IsNotOIDC : L'application n'est pas de type oidc - IsNotAPI : L'application n'est pas de type API - OIDCAuthMethodNoSecret : La méthode d'authentification OIDC choisie ne nécessite pas de secret. - APIAuthMethodNoSecret : La méthode d'authentification API choisie ne nécessite pas de secret. - AuthMethodNoPrivateKeyJWT : La méthode d'authentification choisie ne nécessite pas de clé. - ClientSecretInvalid : Le secret du client n'est pas valide - RequiredFieldsMissing : Certains champs obligatoires sont manquants - Grant : - AlreadyExists : La subvention du projet existe déjà - NotFound : Subvention non trouvée - Invalide : La subvention du projet n'est pas valide - NotExisting : La subvention de projet n'existe pas - HasNotExistingRole : Un rôle n'existe pas sur le projet - NotActive : La subvention de projet n'est pas active - NotInactive : La subvention du projet n'est pas inactive - UserIDMisisng : ID utilisateur manquant + Notfound: Membre du projet non trouvé + Invalid: Le membre du projet n'est pas valide + AlreadyExists: Le membre du projet existe déjà + NotExisting: Le membre du projet n'existe pas + MinimumOneRoleNeeded: Au moins un rôle doit être ajouté + Role: + AlreadyExists: Le rôle existe déjà + Invalid: Le rôle n'est pas valide + NotExisting: Le rôle n'existe pas + IDMissing: ID manquant + App: + AlreadyExists: L'application existe déjà + NotFound: Application non trouvée + Invalid: Application invalide + NotExisting: L'application n'existe pas + NotActive: L'application n'est pas active + NotInactive: L'application n'est pas inactive + OIDCConfigInvalid: La configuration de l'OIDC n'est pas valide + APIConfigInvalid: La configuration de l'API n'est pas valide + IsNotOIDC: L'application n'est pas de type oidc + IsNotAPI: L'application n'est pas de type API + OIDCAuthMethodNoSecret: La méthode d'authentification OIDC choisie ne nécessite pas de secret. + APIAuthMethodNoSecret: La méthode d'authentification API choisie ne nécessite pas de secret. + AuthMethodNoPrivateKeyJWT: La méthode d'authentification choisie ne nécessite pas de clé. + ClientSecretInvalid: Le secret du client n'est pas valide + RequiredFieldsMissing: Certains champs obligatoires sont manquants + Grant: + AlreadyExists: La subvention du projet existe déjà + NotFound: Subvention non trouvée + Invalid: La subvention du projet n'est pas valide + NotExisting: La subvention de projet n'existe pas + HasNotExistingRole: Un rôle n'existe pas sur le projet + NotActive: La subvention de projet n'est pas active + NotInactive: La subvention du projet n'est pas inactive IAM: Member: - RolesNotChanged : Les rôles n'ont pas été modifiés - MemberInvalid : Le membre n'est pas valide - MemberAlreadyExisting : Le membre existe déjà - MemberNotExisting : Le membre n'existe pas - IDMissing : Id manquant - IAMProjectIDMissing : Id de projet IAM manquant - IamProjectAlreadySet : L'identifiant du projet IAM a déjà été défini - IdpInvalid : La configuration IDP n'est pas valide - IdpNotExisting : La configuration IDP n'existe pas - OIDCConfigInvalid : La configuration IDP de l'OIDC n'est pas valide - IdpIsNotOIDC : La configuration IDP n'est pas de type oidc - LoginPolicyInvalid : La politique de connexion n'est pas valide - LoginPolicyNotExisting : La politique de connexion n'existe pas - IdpProviderInvalid : Idp Provider est invalide - LoginPolicy : - NotFound : La politique de connexion par défaut n'a pas été trouvée - NotChanged : La politique de connexion par défaut n'a pas été modifiée - NotExisting : La politique de connexion par défaut n'existe pas - AlreadyExists : La politique de connexion par défaut existe déjà - RedirectURIInvalid : L'URI de redirection par défaut n'est pas valide + RolesNotChanged: Les rôles n'ont pas été modifiés + MemberInvalid: Le membre n'est pas valide + MemberAlreadyExisting: Le membre existe déjà + MemberNotExisting: Le membre n'existe pas + IDMissing: Id manquant + IAMProjectIDMissing: Id de projet IAM manquant + IamProjectAlreadySet: L'identifiant du projet IAM a déjà été défini + IdpInvalid: La configuration IDP n'est pas valide + IdpNotExisting: La configuration IDP n'existe pas + OIDCConfigInvalid: La configuration IDP de l'OIDC n'est pas valide + IdpIsNotOIDC: La configuration IDP n'est pas de type oidc + LoginPolicyInvalid: La politique de connexion n'est pas valide + LoginPolicyNotExisting: La politique de connexion n'existe pas + IdpProviderInvalid: Idp Provider est invalide + LoginPolicy: + NotFound: La politique de connexion par défaut n'a pas été trouvée + NotChanged: La politique de connexion par défaut n'a pas été modifiée + NotExisting: La politique de connexion par défaut n'existe pas + AlreadyExists: La politique de connexion par défaut existe déjà + RedirectURIInvalid: L'URI de redirection par défaut n'est pas valide MFA: - AlreadyExists : Le multifacteur existe déjà - NotExisting : Multifacteur non existant - Non spécifié : Multifacteur invalide - IDP : - AlreadyExists : Le fournisseur d'identité existe déjà - NotExisting : Le fournisseur d'identité n'existe pas - Invalid : Le fournisseur d'identité n'est pas valide - IDPConfig : - AlreadyExists : La configuration du fournisseur d'identité existe déjà - NotInactive : La configuration du fournisseur d'identité n'est pas inactive - NotActive : La configuration du fournisseur d'identité n'est pas active - LabelPolicy : - NotFound : Politique d'étiquetage privé par défaut non trouvée - NotChanged : La politique de label privé par défaut n'a pas été modifiée - MailTemplate : - NotFound : Default Mail Template not found - NotChanged : Le modèle de courrier par défaut n'a pas été modifié - AlreadyExists : Default Mail Template existe déjà - Invalid : Le modèle de courrier par défaut n'est pas valide - CustomMessageText : - NotFound : Le texte du message par défaut n'a pas été trouvé - NotChanged : Le texte du message par défaut n'a pas été modifié - AlreadyExists : Le texte du message par défaut existe déjà - Invalid : Le texte du message par défaut n'est pas valide - PasswordComplexityPolicy : - NotFound : Politique de complexité des mots de passe par défaut non trouvée - NotExisting : La politique de complexité des mots de passe par défaut n'existe pas - AlreadyExists : La politique de complexité des mots de passe par défaut existe déjà - Empty : Politique de complexité des mots de passe par défaut vide - NotChanged : La politique de complexité des mots de passe par défaut n'a pas été modifiée. - PasswordAgePolicy : - NotFound : La politique d'âge du mot de passe par défaut n'a pas été trouvée - NotExisting : La politique d'âge des mots de passe par défaut n'existe pas - AlreadyExists : La politique d'âge du mot de passe par défaut existe déjà - Empty : Politique d'âge des mots de passe par défaut vide - NotChanged : La politique d'âge du mot de passe par défaut n'a pas été modifiée - PasswordLockoutPolicy : - NotFound : La politique de verrouillage du mot de passe par défaut n'a pas été trouvée - NotExisting : La politique de verrouillage du mot de passe par défaut n'existe pas - AlreadyExists : La politique de verrouillage de mot de passe par défaut existe déjà - Empty : Politique de verrouillage par mot de passe par défaut vide - NotChanged : La politique de verrouillage par mot de passe par défaut n'a pas été modifiée. - DomainPolicy : - NotFound : Politique IAM Org non trouvée - Empty : La politique Org IAM est vide - NotExisting : La politique IAM d'Org n'existe pas - AlreadyExists : La politique IAM d'Org existe déjà - NotChanged : La politique IAM d'Org n'a pas été modifiée + AlreadyExists: Le multifacteur existe déjà + NotExisting: Multifacteur non existant + Unspecified: Multifacteur invalide + IDP: + AlreadyExists: Le fournisseur d'identité existe déjà + NotExisting: Le fournisseur d'identité n'existe pas + Invalid: Le fournisseur d'identité n'est pas valide + IDPConfig: + AlreadyExists: La configuration du fournisseur d'identité existe déjà + NotInactive: La configuration du fournisseur d'identité n'est pas inactive + NotActive: La configuration du fournisseur d'identité n'est pas active + LabelPolicy: + NotFound: Politique d'étiquetage privé par défaut non trouvée + NotChanged: La politique de label privé par défaut n'a pas été modifiée + MailTemplate: + NotFound: Default Mail Template not found + NotChanged: Le modèle de courrier par défaut n'a pas été modifié + AlreadyExists: Default Mail Template existe déjà + Invalid: Le modèle de courrier par défaut n'est pas valide + CustomMessageText: + NotFound: Le texte du message par défaut n'a pas été trouvé + NotChanged: Le texte du message par défaut n'a pas été modifié + AlreadyExists: Le texte du message par défaut existe déjà + Invalid: Le texte du message par défaut n'est pas valide + PasswordComplexityPolicy: + NotFound: Politique de complexité des mots de passe par défaut non trouvée + NotExisting: La politique de complexité des mots de passe par défaut n'existe pas + AlreadyExists: La politique de complexité des mots de passe par défaut existe déjà + Empty: Politique de complexité des mots de passe par défaut vide + NotChanged: La politique de complexité des mots de passe par défaut n'a pas été modifiée. + PasswordAgePolicy: + NotFound: La politique d'âge du mot de passe par défaut n'a pas été trouvée + NotExisting: La politique d'âge des mots de passe par défaut n'existe pas + AlreadyExists: La politique d'âge du mot de passe par défaut existe déjà + Empty: Politique d'âge des mots de passe par défaut vide + NotChanged: La politique d'âge du mot de passe par défaut n'a pas été modifiée + PasswordLockoutPolicy: + NotFound: La politique de verrouillage du mot de passe par défaut n'a pas été trouvée + NotExisting: La politique de verrouillage du mot de passe par défaut n'existe pas + AlreadyExists: La politique de verrouillage de mot de passe par défaut existe déjà + Empty: Politique de verrouillage par mot de passe par défaut vide + NotChanged: La politique de verrouillage par mot de passe par défaut n'a pas été modifiée. + DomainPolicy: + NotFound: Politique IAM Org non trouvée + Empty: La politique Org IAM est vide + NotExisting: La politique IAM d'Org n'existe pas + AlreadyExists: La politique IAM d'Org existe déjà + NotChanged: La politique IAM d'Org n'a pas été modifiée Policy: - AlreadyExists : La politique existe déjà - Label : - Invalid : - PrimaryColor : La couleur primaire n'est pas une valeur de couleur hexadécimale valide. - BackgroundColor : La couleur d'arrière-plan n'a pas de valeur de couleur hexadécimale valide. - WarnColor : La couleur d'avertissement n'a pas de valeur de couleur hexadécimale valide. - FontColor : La couleur de la police n'a pas de valeur de couleur Hex valide. - PrimaryColorDark : La couleur primaire (mode foncé) n'a pas de valeur de couleur Hex valide. - BackgroundColorDark : La couleur d'arrière-plan (mode foncé) n'a pas de valeur de couleur Hex valide. - WarnColorDark : La couleur d'avertissement (mode sombre) n'a pas de valeur de couleur hexadécimale valide. - FontColorDark : La couleur de la police (mode foncé) n'a pas de valeur de couleur hexadécimale valide. - UserGrant : - AlreadyExists : L'autorisation de l'utilisateur existe déjà - NotFound : Subvention d'utilisateur non trouvée - Invalid : La subvention d'utilisateur n'est pas valide - NotChanged : L'autorisation de l'utilisateur n'a pas été modifiée. - IDMissing : Id manquant - NotActive : La subvention de l'utilisateur n'est pas active - NotInactive : La subvention à l'utilisateur n'est pas désactivée - NoPermissionForProject : L'utilisateur n'a aucune autorisation pour ce projet - RoleKeyNotFound : Rôle non trouvé - Membre : - AlreadyExists : Le membre existe déjà - IDPConfig : - AlreadyExists : La configuration IDP portant ce nom existe déjà - NotExisting : La configuration du fournisseur d'identité n'existe pas - Changements : - NotFound : Aucun historique trouvé - AuditRetention : L'historique est en dehors de la rétention du journal d'audit - Token : - NotFound : Token non trouvé - UserSession : - NotFound : UserSession non trouvé - Key : - ExpireBeforeNow : La date d'expiration est dans le passé - Login : - LoginPolicy : - MFA : - ForceAndNotConfigured : Multifacteur configuré comme requis, mais aucun fournisseur possible n'est configuré. Veuillez contacter votre administrateur système. - Step : - Started : - AlreadyExists : L'étape commencée existe déjà - Done : - AlreadyExists : L'étape terminée existe déjà - CustomText : - Existe déjà : Le texte personnalisé existe déjà - Invalid : Le texte personnalisé n'est pas valide - NotFound : Le texte personnalisé n'a pas été trouvé - TranslationFile : - ReadError : Erreur de lecture du fichier de traduction - MergeError : Le fichier de traduction n'a pas pu être fusionné avec les traductions personnalisées. - NotFound : Le fichier de traduction n'existe pas - MetaData : - NotFound : Métadonnées non trouvées - NoData : La liste des métadonnées est vide - Invalid : Les métadonnées ne sont pas valides - KeyNotExisting : Une ou plusieurs clés n'existent pas - Action : - Invalid : L'action n'est pas valide - NotFound : Action non trouvée - NotActive : L'action n'est pas active - NotInactive : L'action n'est pas inactive - MaxAllowed : Aucune action active supplémentaire n'est autorisée - Flow : - FlowTypeMissing : FlowType missing - Empty : Le flux est déjà vide - WrongTriggerType : TriggerType est invalide - NoChanges : No Changes : Aucun changement - ActionIDsNotExist : Les ActionIDs n'existent pas - Query : - CloseRows : L'instruction SQL n'a pas pu être terminée - SQLStatement : L'instruction SQL n'a pas pu être créée - InvalidRequest : La requête n'est pas valide -EventTypes : - user : - added : Utilisateur ajouté - selfregistered : L'utilisateur s'est enregistré lui-même - initialization : - code : - added : Code d'initialisation généré - sent : Code d'initialisation envoyé - check : - succeeded : Vérification de l'initialisation réussie - failed : La vérification de l'initialisation a échoué - token : - added : Jeton d'accès créé - username : - reserved : Nom d'utilisateur réservé - released : Nom d'utilisateur libéré - email : - reserved : Adresse e-mail réservée - released : Adresse email libérée - changed : Adresse e-mail modifiée - verified : Adresse e-mail vérifiée - verification : - failed : La vérification de l'adresse e-mail a échoué - code : - added : Code de vérification de l'adresse e-mail généré - sent : Code de vérification de l'adresse e-mail envoyé - machine : - added : Utilisateur technique ajouté - changed : Changement d'utilisateur technique - key : - added : Clé ajoutée - removed : Clé supprimée - human : - added : Personne ajoutée - selfregistered : La personne s'est enregistrée elle-même - avatar : - added : Avatar ajouté - removed : Avatar supprimé - initialization : - code : - added : Code d'initialisation généré - sent : Code d'initialisation envoyé - check : - succeeded : Vérification de l'initialisation réussie - failed : La vérification de l'initialisation a échoué - username : - reserved : Nom d'utilisateur réservé - released : Nom d'utilisateur libéré - email : - changed : Adresse e-mail modifiée - verified : Adresse e-mail vérifiée - verification : - failed : La vérification de l'adresse e-mail a échoué + AlreadyExists: La politique existe déjà + Label: + Invalid: + PrimaryColor: La couleur primaire n'est pas une valeur de couleur hexadécimale valide. + BackgroundColor: La couleur d'arrière-plan n'a pas de valeur de couleur hexadécimale valide. + WarnColor: La couleur d'avertissement n'a pas de valeur de couleur hexadécimale valide. + FontColor: La couleur de la police n'a pas de valeur de couleur Hex valide. + PrimaryColorDark: La couleur primaire (mode foncé) n'a pas de valeur de couleur Hex valide. + BackgroundColorDark: La couleur d'arrière-plan (mode foncé) n'a pas de valeur de couleur Hex valide. + WarnColorDark: La couleur d'avertissement (mode sombre) n'a pas de valeur de couleur hexadécimale valide. + FontColorDark: La couleur de la police (mode foncé) n'a pas de valeur de couleur hexadécimale valide. + UserGrant: + AlreadyExists: L'autorisation de l'utilisateur existe déjà + NotFound: Subvention d'utilisateur non trouvée + Invalid: La subvention d'utilisateur n'est pas valide + NotChanged: L'autorisation de l'utilisateur n'a pas été modifiée. + IDMissing: Id manquant + NotActive: La subvention de l'utilisateur n'est pas active + NotInactive: La subvention à l'utilisateur n'est pas désactivée + NoPermissionForProject: L'utilisateur n'a aucune autorisation pour ce projet + RoleKeyNotFound: Rôle non trouvé + Member: + AlreadyExists: Le membre existe déjà + IDPConfig: + AlreadyExists: La configuration IDP portant ce nom existe déjà + NotExisting: La configuration du fournisseur d'identité n'existe pas + Changes: + NotFound: Aucun historique trouvé + AuditRetention: L'historique est en dehors de la rétention du journal d'audit + Token: + NotFound: Token non trouvé + UserSession: + NotFound: UserSession non trouvé + Key: + ExpireBeforeNow: La date d'expiration est dans le passé + Login: + LoginPolicy: + MFA: + ForceAndNotConfigured: Multifacteur configuré comme requis, mais aucun fournisseur possible n'est configuré. Veuillez contacter votre administrateur système. + Step: + Started: + AlreadyExists: L'étape commencée existe déjà + Done: + AlreadyExists: L'étape terminée existe déjà + CustomText: + AlreadyExists: Le texte personnalisé existe déjà + Invalid: Le texte personnalisé n'est pas valide + NotFound: Le texte personnalisé n'a pas été trouvé + TranslationFile: + ReadError: Erreur de lecture du fichier de traduction + MergeError: Le fichier de traduction n'a pas pu être fusionné avec les traductions personnalisées. + NotFound: Le fichier de traduction n'existe pas + MetaData: + NotFound: Métadonnées non trouvées + NoData: La liste des métadonnées est vide + Invalid: Les métadonnées ne sont pas valides + KeyNotExisting: Une ou plusieurs clés n'existent pas + Action: + Invalid: L'action n'est pas valide + NotFound: Action non trouvée + NotActive: L'action n'est pas active + NotInactive: L'action n'est pas inactive + MaxAllowed: Aucune action active supplémentaire n'est autorisée + Flow: + FlowTypeMissing: FlowType missing + Empty: Le flux est déjà vide + WrongTriggerType: TriggerType est invalide + NoChanges: Aucun changement + ActionIDsNotExist: Les ActionIDs n'existent pas + Query: + CloseRows: L'instruction SQL n'a pas pu être terminée + SQLStatement: L'instruction SQL n'a pas pu être créée + InvalidRequest: La requête n'est pas valide +EventTypes: + user: + added: Utilisateur ajouté + selfregistered: L'utilisateur s'est enregistré lui-même + initialization: code: - added : Code de vérification de l'adresse e-mail généré - sent : Code de vérification de l'adresse e-mail envoyé - machine : - added : Utilisateur technique ajouté - changed : Changement d'utilisateur technique - key : - added : Clé ajoutée - removed : Clé supprimée - humain : - added : Personne ajoutée - selfregistered : La personne s'est enregistrée elle-même - avatar : - added : Avatar ajouté - removed : Avatar supprimé - initialization : - code : - added : Code d'initialisation généré - sent : Code d'initialisation envoyé - check : - succeeded : Vérification de l'initialisation réussie - failed : La vérification de l'initialisation a échoué - username : - reserved : Nom d'utilisateur réservé - released : Nom d'utilisateur libéré - email : - changed : Adresse e-mail modifiée - verified : Adresse e-mail vérifiée - verification : - failed : La vérification de l'adresse e-mail a échoué - code : - added : Code de vérification de l'adresse e-mail généré - sent : Code de vérification de l'adresse e-mail envoyé - password : - changed : Mot de passe modifié - code : - added : Code de mot de passe généré - sent : Code du mot de passe envoyé - verified : - succeeded : Vérification du mot de passe réussie - failed : La vérification du mot de passe a échoué - external login : - verification : - succeeded : Connexion externe réussie - externalidp : - added : Externer IDP ajouté - removed : Externer IDP supprimé - cascade : - removed : Externer IDP cascade supprimé - Phone : - changed : Le numéro de téléphone a changé - verified : Numéro de téléphone vérifié - verification : - failed : La vérification du numéro de téléphone a échoué - code : - added : Code du numéro de téléphone généré - sent : Code du numéro de téléphone envoyé - removed : Numéro de téléphone supprimé - profile : - changed : Profil de l'utilisateur modifié - adresse : - changed : L'adresse de l'utilisateur a changé - mfa : - otp : - added : OTP multifacteur ajouté - verfied : OTP multifactoriel vérifié - removed : OTP multifactorielle supprimée - verified : - succeeded : Vérification de l'OTP multifactorielle réussie - failed : La vérification de l'OTP multifactorielle a échoué - u2f : - jeton : - added : Ajout d'un jeton U2F multifacteur - verified : Jeton U2F multifactor vérifié - removed : Jeton U2F multifactoriel retiré - start : - login : Vérification U2F multifactoriel commencée - verified : - succeeded : Vérification multifactorielle U2F réussie - failed : La vérification multifactorielle U2F a échoué - signcount : - changed : La somme de contrôle du jeton Multifactor U2F a été modifiée. - init : - skipped : L'initialisation du multifacteur a été ignorée - passwordless : - token : - added : Jeton pour la connexion sans mot de passe ajouté - verified : Jeton pour la connexion sans mot de passe vérifié - removed : Jeton de connexion sans mot de passe supprimé - start : - login : Vérification de la connexion sans mot de passe commencée - verification : - succeeded : Vérification de la connexion sans mot de passe réussie - failed : La vérification de la connexion sans mot de passe a échoué - signcount : - changed : La somme de contrôle du jeton de connexion sans mot de passe a été modifiée. - initialization : - code : - added : Ajout du code d'initialisation sans mot de passe - sent : Code d'initialisation sans mot de passe envoyé - requested : Code d'initialisation sans mot de passe demandé - check : - succeeded : Code d'initialisation sans mot de passe vérifié avec succès - failed : La vérification du code d'initialisation sans mot de passe a échoué - signed : - out : L'utilisateur s'est déconnecté - refresh : - token : - added : Création d'un jeton de rafraîchissement - renewed : Rafraîchissement d'un jeton renouvelé - removed : Jeton d'actualisation supprimé - locked : Utilisateur verrouillé - unlocked : Utilisateur déverrouillé - deactivated : Utilisateur désactivé - reactivated : Utilisateur réactivé - removed : Utilisateur supprimé - password : - changed : Mot de passe modifié - code : - added : Code du mot de passe généré - sent : Code du mot de passe envoyé - check : - succeeded : Vérification du mot de passe réussie - failed : La vérification du mot de passe a échoué + added: Code d'initialisation généré + sent: Code d'initialisation envoyé + check: + succeeded: Vérification de l'initialisation réussie + failed: La vérification de l'initialisation a échoué + token: + added: Jeton d'accès créé + username: + reserved: Nom d'utilisateur réservé + released: Nom d'utilisateur libéré + email: + reserved: Adresse e-mail réservée + released: Adresse email libérée + changed: Adresse e-mail modifiée + verified: Adresse e-mail vérifiée + verification: + failed: La vérification de l'adresse e-mail a échoué + code: + added: Code de vérification de l'adresse e-mail généré + sent: Code de vérification de l'adresse e-mail envoyé + machine: + added: Utilisateur technique ajouté + changed: Changement d'utilisateur technique + key: + added: Clé ajoutée + removed: Clé supprimée + human: + added: Personne ajoutée + selfregistered: La personne s'est enregistrée elle-même + avatar: + added: Avatar ajouté + removed: Avatar supprimé + initialization: + code: + added: Code d'initialisation généré + sent: Code d'initialisation envoyé + check: + succeeded: Vérification de l'initialisation réussie + failed: La vérification de l'initialisation a échoué + username: + reserved: Nom d'utilisateur réservé + released: Nom d'utilisateur libéré + email: + changed: Adresse e-mail modifiée + verified: Adresse e-mail vérifiée + verification: + failed: La vérification de l'adresse e-mail a échoué + code: + added: Code de vérification de l'adresse e-mail généré + sent: Code de vérification de l'adresse e-mail envoyé + password: + changed: Mot de passe modifié + code: + added: Code de mot de passe généré + sent: Code du mot de passe envoyé + check: + succeeded: Vérification du mot de passe réussie + failed: La vérification du mot de passe a échoué + externallogin: + check: + succeeded: Connexion externe réussie + externalidp: + added: Externer IDP ajouté + removed: Externer IDP supprimé + cascade: + removed: Externer IDP cascade supprimé + phone: + changed: Le numéro de téléphone a changé + verified: Numéro de téléphone vérifié + verification: + failed: La vérification du numéro de téléphone a échoué + code: + added: Code du numéro de téléphone généré + sent: Code du numéro de téléphone envoyé + removed: Numéro de téléphone supprimé + profile: + changed: Profil de l'utilisateur modifié + address: + changed: L'adresse de l'utilisateur a changé + mfa: + otp: + added: OTP multifacteur ajouté + verified: OTP multifactoriel vérifié + removed: OTP multifactorielle supprimée + check: + succeeded: Vérification de l'OTP multifactorielle réussie + failed: La vérification de l'OTP multifactorielle a échoué + u2f: + token: + added: Ajout d'un jeton U2F multifacteur + verified: Jeton U2F multifactor vérifié + removed: Jeton U2F multifactoriel retiré + begin: + login: Vérification U2F multifactoriel commencée + check: + succeeded: Vérification multifactorielle U2F réussie + failed: La vérification multifactorielle U2F a échoué + signcount: + changed: La somme de contrôle du jeton Multifactor U2F a été modifiée. + init: + skipped: L'initialisation du multifacteur a été ignorée + passwordless: + token: + added: Jeton pour la connexion sans mot de passe ajouté + verified: Jeton pour la connexion sans mot de passe vérifié + removed: Jeton de connexion sans mot de passe supprimé + begin: + login: Vérification de la connexion sans mot de passe commencée + check: + succeeded: Vérification de la connexion sans mot de passe réussie + failed: La vérification de la connexion sans mot de passe a échoué + signcount: + changed: La somme de contrôle du jeton de connexion sans mot de passe a été modifiée. + initialization: + code: + added: Ajout du code d'initialisation sans mot de passe + sent: Code d'initialisation sans mot de passe envoyé + requested: Code d'initialisation sans mot de passe demandé + check: + succeeded: Code d'initialisation sans mot de passe vérifié avec succès + failed: La vérification du code d'initialisation sans mot de passe a échoué + signed: + out: L'utilisateur s'est déconnecté + refresh: + token: + added: Création d'un jeton de rafraîchissement + renewed: Rafraîchissement d'un jeton renouvelé + removed: Jeton d'actualisation supprimé + locked: Utilisateur verrouillé + unlocked: Utilisateur déverrouillé + deactivated: Utilisateur désactivé + reactivated: Utilisateur réactivé + removed: Utilisateur supprimé + password: + changed: Mot de passe modifié + code: + added: Code du mot de passe généré + sent: Code du mot de passe envoyé + check: + succeeded: Vérification du mot de passe réussie + failed: La vérification du mot de passe a échoué phone: - changed : Le numéro de téléphone a changé - verified : Numéro de téléphone vérifié - verification : - failed : La vérification du numéro de téléphone a échoué - code : - added : Code du numéro de téléphone généré - sent : Code du numéro de téléphone envoyé - profil : - changed : Profil de l'utilisateur modifié - adresse : - changed : L'adresse de l'utilisateur a changé - mfa : - otp : - added : OTP multifacteur ajouté - verified : OTP multifactoriel vérifié - removed : OTP multifactorielle supprimée - verified : - succeeded : Vérification de l'OTP multifactorielle réussie - failed : Échec de la vérification de l'OTP multifactorielle - init : - skipped : L'initialisation du multifacteur a été ignorée - signed : - out : L'utilisateur s'est déconnecté - grant : - added : Autorisation ajoutée - changed : Autorisation modifiée - removed : Autorisation supprimée - deactivated : Autorisation désactivée - reactivated : Autorisation réactivée - reserved : Autorisation réservée - released : Autorisation validée - cascade : - removed : Autorisation supprimée - changed : Autorisation modifiée - MetaData : - set : Ensemble de métadonnées de l'utilisateur - removed : Métadonnées de l'utilisateur supprimées - removed.all : Suppression de toutes les métadonnées utilisateur - org : - added : Organisation ajoutée - changed : Organisation modifiée - deactivated : Organisation désactivée - reactivated : Organisation réactivée - removed : Organisation supprimée - domain : - added : Domaine ajouté - verification : - added : Vérification du domaine ajoutée - failed : La vérification du domaine a échoué - verified : Domaine vérifié - removed : Domaine supprimé - primary : - set : Domaine primaire défini - reserved : Domaine réservé - released : Domaine libéré - name : - reserved : Nom de l'organisation réservé + changed: Le numéro de téléphone a changé + verified: Numéro de téléphone vérifié + verification: + failed: La vérification du numéro de téléphone a échoué + code: + added: Code du numéro de téléphone généré + sent: Code du numéro de téléphone envoyé + profile: + changed: Profil de l'utilisateur modifié + address: + changed: L'adresse de l'utilisateur a changé + mfa: + otp: + added: OTP multifacteur ajouté + verified: OTP multifactoriel vérifié + removed: OTP multifactorielle supprimée + check: + succeeded: Vérification de l'OTP multifactorielle réussie + failed: Échec de la vérification de l'OTP multifactorielle + init: + skipped: L'initialisation du multifacteur a été ignorée + signed: + out: L'utilisateur s'est déconnecté + grant: + added: Autorisation ajoutée + changed: Autorisation modifiée + removed: Autorisation supprimée + deactivated: Autorisation désactivée + reactivated: Autorisation réactivée + reserved: Autorisation réservée + released: Autorisation validée + cascade: + removed: Autorisation supprimée + changed: Autorisation modifiée + metadata: + set: Ensemble de métadonnées de l'utilisateur + removed: Métadonnées de l'utilisateur supprimées + removed.all: Suppression de toutes les métadonnées utilisateur + org: + added: Organisation ajoutée + changed: Organisation modifiée + deactivated: Organisation désactivée + reactivated: Organisation réactivée + removed: Organisation supprimée + domain: + added: Domaine ajouté + verification: + added: Vérification du domaine ajoutée + failed: La vérification du domaine a échoué + verified: Domaine vérifié + removed: Domaine supprimé + primary: + set: Domaine primaire défini + reserved: Domaine réservé + released: Domaine libéré + name: + reserved: Nom de l'organisation réservé released: Nom de l'organisation libéré - membre : - added : Membre de l'organisation ajouté - changed : Le membre de l'organisation a changé - removed : Membre de l'organisation supprimé - cascade : - removed : Membre de l'organisation supprimé en cascade - iam : - policy : - added : Politique système ajoutée - changed : Modification de la politique système - removed : Politique système supprimée - idp : - config : - added : Ajout de la configuration IDP - changed : Modification de la configuration IDP - removed : Suppression de la configuration IDP - deactivated : Configuration IDP désactivée - reactivated : Configuration IDP réactivée - oidc : - config : - added : Ajout de la configuration IDP de l'OIDC - changed : Modification de la configuration de l'OIDC IDP - saml : - config : - added : Configuration IDP SAML ajoutée - changed : Modification de la configuration IDP SAML - customtext : - set : Jeu de texte personnalisé - removed : Texte personnalisé supprimé - template : - removed : Modèle de texte personnalisé supprimé - policy : - login : - added : Politique de connexion ajoutée - changed : Politique de connexion modifiée - removed : Politique de connexion supprimée - idpprovider : - added : Fournisseur d'Idp ajouté à la politique de connexion - removed : Idp Provider supprimé de la politique de connexion - secondfactor : - added : Second factor ajouté à la politique de connexion - removed : Second facteur supprimé de la politique de connexion - multifactor : - added : Facteur multiple ajouté à la politique de connexion - removed : Facteur multiple supprimé de la politique de connexion - password : - complexity : - added : Ajout de la politique de complexité des mots de passe - changed : Modification de la politique de complexité des mots de passe - removed : Suppression de la politique de complexité des mots de passe - age : - added : Ajout de la politique d'ancienneté des mots de passe - changed : Modification de la politique d'ancienneté des mots de passe - removed : Suppression de la politique d'âge du mot de passe - lockout : - added : Ajout de la politique de verrouillage des mots de passe - changed : Modification de la politique de verrouillage des mots de passe - removed : Suppression de la politique de verrouillage du mot de passe - label: - added : Politique d'étiquetage ajoutée - changed : Politique d'étiquetage modifiée - activated : Label Policy activated : Politique d'étiquetage activée - removed : Politique d'étiquetage supprimée - logo : - added : Logo ajouté à la politique d'étiquetage - removed : Logo retiré de la politique d'étiquetage - sombre : - added : Logo (mode sombre) ajouté à la politique d'étiquetage - removed : Le logo (mode sombre) a été retiré de la politique d'étiquetage - icon : - added : Icône ajoutée à la politique d'étiquetage - removed : Icône supprimée de la politique d'étiquetage - dark : - added : Icône (mode sombre) ajoutée à la politique d'étiquetage - removed : Icône (mode sombre) supprimée de la politique d'étiquetage - font : - added : Police ajoutée à la politique d'étiquetage - removed : Police supprimée de la politique d'étiquetage - assets : - removed : Actifs supprimés de la politique d'étiquetage - privacy : - added : Politique de confidentialité et CGU ajoutés - changed : Politique de confidentialité et CGU modifiées - removed : Politique de confidentialité et conditions d'utilisation supprimées - flow : - trigger_actions : - set : Action set - cascade : - removed : Cascade d'actions supprimée - removed : Actions supprimées - projet : - added : Projet ajouté - changed : Projet modifié - deactivated : Projet désactivé - reactivated : Projet réactivé - removed : Projet supprimé - membre : - added : Membre du projet ajouté - changed : Membre du projet modifié - removed : Membre du projet supprimé - cascade : - removed : Membre du projet supprimé en cascade - role : - added : Rôle de projet ajouté - changed : Rôle de projet modifié - removed : Rôle du projet supprimé - grant : - added : Accès à la gestion ajouté - changed : Accès de gestion modifié - removed : Accès de gestion supprimé - deactivated : Accès de gestion désactivé - reactivated : Accès de gestion réactivé - cascade : - changed : Accès de gestion modifié - membre : - added : Membre de l'accès de gestion ajouté - changed : Membre d'accès de gestion modifié - removed : Membre d'accès de gestion supprimé - cascade : - removed : Cascade d'accès de gestion supprimée - application : - added : Application ajoutée - changed : Application modifiée - removed : Application supprimée - deactivated : Application désactivée - reactivated : Application réactivée - oidc : - secret : - verified : - check : Vérification du secret du client OIDC réussie - failed : La vérification du secret du client OIDC a échoué - key : - added : Clé d'application ajoutée - removed : Clé d'application supprimée - config : - oidc : - added : Configuration OIDC ajoutée - changed : Modification de la configuration de l'OIDC - secret : - changed : Le secret de l'OIDC a été modifié - api : - added : Configuration API ajoutée - chaged : La configuration de l'API a été modifiée - secret : - changed : Le secret de l'API a été modifié - policy : - password : - complexity : - added : Ajout de la politique de complexité des mots de passe - changed : Modification de la politique de complexité des mots de passe - age : - added : Ajout de la politique d'ancienneté des mots de passe - changed : Modification de la politique relative à l'âge du mot de passe - verrouillage : - added : Ajout de la politique de verrouillage des mots de passe - changed : Modification de la politique de verrouillage des mots de passe - iam : - setup : - started : L'installation de ZITADEL a commencé - done : Installation de ZITADEL terminée - global : - org : - set : Global org set - projet : - iam : - set : set du projet ZITADEL - membre : - added : ZITADEL membre ajouté - changed : membre de ZITADEL modifié - removed : membre ZITADEL supprimé - cascade : - removed : Membre ZITADEL supprimé en cascade - idp : - config : - added : Ajout de la configuration IDP - changed : Modification de la configuration IDP - removed : Suppression de la configuration IDP - deactivated : Configuration IDP désactivée - reactivated : Configuration IDP réactivée - oidc : - config : - added : Ajout de la configuration IDP de l'OIDC - changed : Modification de la configuration de l'OIDC IDP + member: + added: Membre de l'organisation ajouté + changed: Le membre de l'organisation a changé + removed: Membre de l'organisation supprimé + cascade: + removed: Membre de l'organisation supprimé en cascade + iam: + policy: + added: Politique système ajoutée + changed: Modification de la politique système + removed: Politique système supprimée + idp: + config: + added: Ajout de la configuration IDP + changed: Modification de la configuration IDP + removed: Suppression de la configuration IDP + deactivated: Configuration IDP désactivée + reactivated: Configuration IDP réactivée + oidc: + config: + added: Ajout de la configuration IDP de l'OIDC + changed: Modification de la configuration de l'OIDC IDP saml: - config : - added : Ajout de la configuration SAML IDP - changed : Modification de la configuration de SAML IDP - policy : - login : - added : Politique de connexion par défaut ajoutée - changed : La politique de connexion par défaut a été modifiée - idpprovider : - added : Idp Provider ajouté à la politique de connexion par défaut - removed : Idp Provider supprimé de la politique de connexion par défaut - label : - added : Ajout d'une politique d'étiquetage - modifié : La politique d'étiquetage a été modifiée - activé : Politique d'étiquetage activée - logo : - added : Logo ajouté à la politique d'étiquetage - removed : Logo retiré de la politique d'étiquetage - sombre : - added : Logo (mode sombre) ajouté à la politique d'étiquetage - removed : Le logo (mode sombre) a été retiré de la politique d'étiquetage - icon : - added : Icône ajoutée à la politique d'étiquetage - removed : Icône supprimée de la politique d'étiquetage - sombre : - added : Icône (mode sombre) ajoutée à la politique d'étiquetage - removed : Icône (mode sombre) supprimée de la politique d'étiquetage - font : - added : Police ajoutée à la politique d'étiquetage - removed : Police supprimée de la politique d'étiquetage - actifs : - removed : Actifs supprimés de la politique d'étiquetage - default : - langue : - set : Langue par défaut - oidc : - settings : - added : Ajout de la configuration de l'OIDC - changed : Modification de la configuration de l'OIDC - removed : Suppression de la configuration de l'OIDC - secret : - generator : - added : Générateur de secret ajouté - changed : Générateur de secret modifié - removed : Générateur secret supprimé - smtp : - config : - added : Ajout de la configuration SMTP - changed : Modification de la configuration SMTP - password : - changed : Modification du secret de la configuration SMTP - sms : - config : - twilio : - added : ajout du fournisseur de SMS Twilio - changed : modification du fournisseur de SMS Twilio - token : - changed : Changement du jeton du fournisseur de SMS Twilio - removed : Suppression du fournisseur de SMS Twilio - activated : Activation du fournisseur de SMS Twilio - deactivated : Fournisseur de SMS Twilio désactivé - key_pair : - added : Paire de clés ajoutée - action : - added : Action ajoutée - changed : Action modifiée - deactivated : Action désactivée - reactivated : Action réactivée - removed : Action supprimée + config: + added: Configuration IDP SAML ajoutée + changed: Modification de la configuration IDP SAML + customtext: + set: Jeu de texte personnalisé + removed: Texte personnalisé supprimé + template: + removed: Modèle de texte personnalisé supprimé + policy: + login: + added: Politique de connexion ajoutée + changed: Politique de connexion modifiée + removed: Politique de connexion supprimée + idpprovider: + added: Fournisseur d'Idp ajouté à la politique de connexion + removed: Idp Provider supprimé de la politique de connexion + secondfactor: + added: Second factor ajouté à la politique de connexion + removed: Second facteur supprimé de la politique de connexion + multifactor: + added: Facteur multiple ajouté à la politique de connexion + removed: Facteur multiple supprimé de la politique de connexion + password: + complexity: + added: Ajout de la politique de complexité des mots de passe + changed: Modification de la politique de complexité des mots de passe + removed: Suppression de la politique de complexité des mots de passe + age: + added: Ajout de la politique d'ancienneté des mots de passe + changed: Modification de la politique d'ancienneté des mots de passe + removed: Suppression de la politique d'âge du mot de passe + lockout: + added: Ajout de la politique de verrouillage des mots de passe + changed: Modification de la politique de verrouillage des mots de passe + removed: Suppression de la politique de verrouillage du mot de passe + label: + added: Politique d'étiquetage ajoutée + changed: Politique d'étiquetage modifiée + activated: Politique d'étiquetage activée + removed: Politique d'étiquetage supprimée + logo: + added: Logo ajouté à la politique d'étiquetage + removed: Logo retiré de la politique d'étiquetage + dark: + added: Logo (mode sombre) ajouté à la politique d'étiquetage + removed: Le logo (mode sombre) a été retiré de la politique d'étiquetage + icon: + added: Icône ajoutée à la politique d'étiquetage + removed: Icône supprimée de la politique d'étiquetage + dark: + added: Icône (mode sombre) ajoutée à la politique d'étiquetage + removed: Icône (mode sombre) supprimée de la politique d'étiquetage + font: + added: Police ajoutée à la politique d'étiquetage + removed: Police supprimée de la politique d'étiquetage + assets: + removed: Actifs supprimés de la politique d'étiquetage + privacy: + added: Politique de confidentialité et CGU ajoutés + changed: Politique de confidentialité et CGU modifiées + removed: Politique de confidentialité et conditions d'utilisation supprimées + flow: + trigger_actions: + set: Action set + cascade: + removed: Cascade d'actions supprimée + removed: Actions supprimées + project: + added: Projet ajouté + changed: Projet modifié + deactivated: Projet désactivé + reactivated: Projet réactivé + removed: Projet supprimé + member: + added: Membre du projet ajouté + changed: Membre du projet modifié + removed: Membre du projet supprimé + cascade: + removed: Membre du projet supprimé en cascade + role: + added: Rôle de projet ajouté + changed: Rôle de projet modifié + removed: Rôle du projet supprimé + grant: + added: Accès à la gestion ajouté + changed: Accès de gestion modifié + removed: Accès de gestion supprimé + deactivated: Accès de gestion désactivé + reactivated: Accès de gestion réactivé + cascade: + changed: Accès de gestion modifié + member: + added: Membre de l'accès de gestion ajouté + changed: Membre d'accès de gestion modifié + removed: Membre d'accès de gestion supprimé + cascade: + removed: Cascade d'accès de gestion supprimée + application: + added: Application ajoutée + changed: Application modifiée + removed: Application supprimée + deactivated: Application désactivée + reactivated: Application réactivée + oidc: + secret: + verified: + check: Vérification du secret du client OIDC réussie + failed: La vérification du secret du client OIDC a échoué + key: + added: Clé d'application ajoutée + removed: Clé d'application supprimée + config: + oidc: + added: Configuration OIDC ajoutée + changed: Modification de la configuration de l'OIDC + secret: + changed: Le secret de l'OIDC a été modifié + api: + added: Configuration API ajoutée + changed: La configuration de l'API a été modifiée + secret: + changed: Le secret de l'API a été modifié + policy: + password: + complexity: + added: Ajout de la politique de complexité des mots de passe + changed: Modification de la politique de complexité des mots de passe + age: + added: Ajout de la politique d'ancienneté des mots de passe + changed: Modification de la politique relative à l'âge du mot de passe + lockout: + added: Ajout de la politique de verrouillage des mots de passe + changed: Modification de la politique de verrouillage des mots de passe + iam: + setup: + started: L'installation de ZITADEL a commencé + done: Installation de ZITADEL terminée + global: + org: + set: Global org set + lockout: + iam: + set: set du projet ZITADEL + member: + added: ZITADEL membre ajouté + changed: membre de ZITADEL modifié + removed: membre ZITADEL supprimé + cascade: + removed: Membre ZITADEL supprimé en cascade + idp: + config: + added: Ajout de la configuration IDP + changed: Modification de la configuration IDP + removed: Suppression de la configuration IDP + deactivated: Configuration IDP désactivée + reactivated: Configuration IDP réactivée + oidc: + config: + added: Ajout de la configuration IDP de l'OIDC + changed: Modification de la configuration de l'OIDC IDP + saml: + config: + added: Ajout de la configuration SAML IDP + changed: Modification de la configuration de SAML IDP + customtext: + set: Le texte a été mis en place + removed: Le texte a été supprimé + policy: + login: + added: Politique de connexion par défaut ajoutée + changed: La politique de connexion par défaut a été modifiée + idpprovider: + added: Idp Provider ajouté à la politique de connexion par défaut + removed: Idp Provider supprimé de la politique de connexion par défaut + label: + added: Ajout d'une politique d'étiquetage + changed: La politique d'étiquetage a été modifiée + activated: Politique d'étiquetage activée + logo: + added: Logo ajouté à la politique d'étiquetage + removed: Logo retiré de la politique d'étiquetage + dark: + added: Logo (mode sombre) ajouté à la politique d'étiquetage + removed: Le logo (mode sombre) a été retiré de la politique d'étiquetage + icon: + added: Icône ajoutée à la politique d'étiquetage + removed: Icône supprimée de la politique d'étiquetage + dark: + added: Icône (mode sombre) ajoutée à la politique d'étiquetage + removed: Icône (mode sombre) supprimée de la politique d'étiquetage + font: + added: Police ajoutée à la politique d'étiquetage + removed: Police supprimée de la politique d'étiquetage + assets: + removed: Actifs supprimés de la politique d'étiquetage + default: + language: + set: Langue par défaut + oidc: + settings: + added: Ajout de la configuration de l'OIDC + changed: Modification de la configuration de l'OIDC + removed: Suppression de la configuration de l'OIDC + secret: + generator: + added: Générateur de secret ajouté + changed: Générateur de secret modifié + removed: Générateur secret supprimé + smtp: + config: + added: Ajout de la configuration SMTP + changed: Modification de la configuration SMTP + password: + changed: Modification du secret de la configuration SMTP + sms: + config: + twilio: + added: ajout du fournisseur de SMS Twilio + changed: modification du fournisseur de SMS Twilio + token: + changed: Changement du jeton du fournisseur de SMS Twilio + removed: Suppression du fournisseur de SMS Twilio + activated: Activation du fournisseur de SMS Twilio + deactivated: Fournisseur de SMS Twilio désactivé + key_pair: + added: Paire de clés ajoutée + action: + added: Action ajoutée + changed: Action modifiée + deactivated: Action désactivée + reactivated: Action réactivée + removed: Action supprimée Application: OIDC: @@ -908,8 +880,7 @@ Application: Code: RedirectUris: HttpOnlyForWeb: Le code de type de subvention n'autorise que les uris de redirection http pour le type d'application web. - CustomOnlyForNative: Le code du type de subvention n'autorise que les uris de redirection personnalisées pour le type d'application natif. (exemple: appname:// ) - + CustomOnlyForNative: Le code du type de subvention n'autorise que les uris de redirection personnalisées pour le type d'application natif. (par exemple appname:// ) Implicit: RedirectUris: CustomNotAllowed: Le type de subvention implicite n'autorise pas les uris de redirection personnalisées diff --git a/internal/static/i18n/it.yaml b/internal/static/i18n/it.yaml index 7fbb46c998d..fdd770d1038 100644 --- a/internal/static/i18n/it.yaml +++ b/internal/static/i18n/it.yaml @@ -94,7 +94,7 @@ Errors: NotAllowedToLink: L'utente non è autorizzato a collegarsi con un provider di accesso esterno Username: AlreadyExists: Nome utente già preso - Reservied: Il nome utente è già preso + Reserved: Il nome utente è già preso Code: Empty: Il codice è vuoto NotFound: Codice non trovato @@ -182,6 +182,8 @@ Errors: AlreadyExists: Impostazioni di accesso già esistenti IdpProviderAlreadyExisting: IDP già esistente IdpProviderNotExisting: IDP non esistente + RegistrationNotAllowed: la registrazione non è consentita. + UsernamePasswordNotAllowed: l'accesso con nome utente e password non è consentito. MFA: AlreadyExists: Multifactor già esistente NotExisting: Multifattore non esistente @@ -261,7 +263,6 @@ Errors: HasNotExistingRole: Uno dei ruoli assegnati non è esistente nel progetto NotActive: Grant del progetto non è attivo NotInactive: Grant del progetto non è inattivo - UserIDMisisng: ID utente mancante IAM: Member: RolesNotChanged: I ruoli non sono stati cambiati @@ -784,7 +785,7 @@ EventTypes: changed: ZITADEL membro cambiato removed: ZITADEL membro rimosso cascade: - removeD: Membro ZITADEL rimosso a cascata + removed: Membro ZITADEL rimosso a cascata idp: config: added: Configurazione IDP aggiunta @@ -800,6 +801,9 @@ EventTypes: config: added: Aggiunta la configurazione IDP SAML changed: Configurazione IDP SAML modificata + customtext: + set: Il testo è stato impostato + removed: Il testo è stato rimosso policy: login: added: Le impostazioni di accesso predefinite sono state aggiunte. @@ -865,6 +869,7 @@ EventTypes: deactivated: Azione disattivata reactivated: Azione riattivata removed: Azione rimossa + Application: OIDC: UnsupportedVersion: La tua versione di OIDC non è supportata From d5a8dd47fdd46147a9ee86bd7be912b8aff0a680 Mon Sep 17 00:00:00 2001 From: Christian Jakob <47860090+thesephirot@users.noreply.github.com> Date: Thu, 7 Jul 2022 13:33:49 +0200 Subject: [PATCH 06/17] docs: fix tls description and limitations (#3884) * docs: fix tls description and limitations * cleanup doku * fixed knative link * added loadbalancing link as example * relative links --- .../guides/installation/run/defaultuser.mdx | 4 ++++ docs/docs/guides/installation/run/knative.mdx | 23 +++---------------- .../installation/run/nextselfhosted.mdx | 4 ---- docs/docs/guides/installation/run/run.mdx | 16 +++++++++++++ 4 files changed, 23 insertions(+), 24 deletions(-) create mode 100644 docs/docs/guides/installation/run/defaultuser.mdx diff --git a/docs/docs/guides/installation/run/defaultuser.mdx b/docs/docs/guides/installation/run/defaultuser.mdx new file mode 100644 index 00000000000..1459ff3e249 --- /dev/null +++ b/docs/docs/guides/installation/run/defaultuser.mdx @@ -0,0 +1,4 @@ +Open your favorite internet browser and navigate to [http://localhost:8080/ui/console](http://localhost:8080/ui/console). +This is the default IAM admin users login: +- **username**: *zitadel-admin@zitadel.localhost* +- **password**: *Password1!* \ No newline at end of file diff --git a/docs/docs/guides/installation/run/knative.mdx b/docs/docs/guides/installation/run/knative.mdx index 401100c1792..fe16b2da13f 100644 --- a/docs/docs/guides/installation/run/knative.mdx +++ b/docs/docs/guides/installation/run/knative.mdx @@ -1,10 +1,7 @@ -## Disclaimer -This guide is for development / demonstration purpose only and does NOT reflect a production setup. - ## New Knative environment ### Download and run Knative quickstart -Follow the Knative quickstart guide to get a local kind/minikube environment with Knative capabilities. +Follow the [Knative quickstart guide](https://knative.dev/docs/getting-started/quickstart-install/) to get a local kind/minikube environment with Knative capabilities. It is basically 4 commands on Mac: @@ -24,10 +21,6 @@ kn quickstart kind That will get you a ready to go knative/kubernetes environment. -See Knative documentation here: -https://knative.dev/docs/install/quickstart-install/ - - ## Database start a single-node cockroachdb as statefulset @@ -35,14 +28,6 @@ start a single-node cockroachdb as statefulset kubectl apply -f https://raw.githubusercontent.com/zitadel/zitadel/v2-alpha/deploy/knative/cockroachdb-statefulset-single-node.yaml ``` -## Secret for TLS termination -create a secret with your certificates for TLS termination - -```bash -#describe happy path -kubectl apply secret -f certs.yaml -``` - ## Start ZITADEL with Knative ```bash @@ -58,9 +43,7 @@ kn service create zitadel \ --env ZITADEL_TLS_ENABLED=false \ --env ZITADEL_EXTERNALDOMAIN=zitadel.default.127.0.0.1.sslip.io \ --env ZITADEL_S3DEFAULTINSTANCE_CUSTOMDOMAIN=zitadel.default.127.0.0.1.sslip.io \ ---arg "admin" --arg "start-from-init" --arg "--masterkey" --arg "MasterkeyNeedsToHave32Characters" \ ---mount /tls.secret=secret:certs/tls.secret \ ---mount /tls.key=secret:certs/tls.key +--arg "start-from-init" --arg "--masterkey" --arg "MasterkeyNeedsToHave32Characters" ``` or use the knative service yaml @@ -83,6 +66,6 @@ http://zitadel.default.127.0.0.1.sslip.io/ui/console If you didn't configure something else, this is the default IAM admin users login: -* username: zitadel-admin@zitadel.zitadel.default.127.0.0.1.sslip.io +* username: zitadel-admin@zitadel.zitadel.default.127.0.0.1.sslip.io * password: Password1! diff --git a/docs/docs/guides/installation/run/nextselfhosted.mdx b/docs/docs/guides/installation/run/nextselfhosted.mdx index d79a8b2ae44..e6afca72d31 100644 --- a/docs/docs/guides/installation/run/nextselfhosted.mdx +++ b/docs/docs/guides/installation/run/nextselfhosted.mdx @@ -1,7 +1,3 @@ -Open your favorite internet browser and navigate to [http://localhost:8080/ui/console](http://localhost:8080/ui/console). -This is the default IAM admin users login: -- **username**: *zitadel-admin@zitadel.localhost* -- **password**: *Password1!* ## What's next diff --git a/docs/docs/guides/installation/run/run.mdx b/docs/docs/guides/installation/run/run.mdx index 8c6cb16c89a..c0aa8764688 100644 --- a/docs/docs/guides/installation/run/run.mdx +++ b/docs/docs/guides/installation/run/run.mdx @@ -11,6 +11,7 @@ import Compose from './compose.mdx' import Helm from './helm.mdx' import Knative from './knative.mdx' import NextSelfHosted from './nextselfhosted.mdx' +import DefaultUser from './defaultuser.mdx' # Run ZITADEL @@ -18,6 +19,16 @@ Choose your platform and run ZITADEL with the most minimal configuration possibl For an easy self-hosted production setup, we recommend running ZITADEL on [Kubernetes](https://kubernetes.io/docs/home/), using our official [Helm](https://helm.sh/docs/) chart. By default, it runs a highly available ZITADEL instance along with a secure and highly available [CockroachDB](https://www.cockroachlabs.com/docs/stable/) instance. +## Disclaimer +This guide is for development / demonstration purpose only and does NOT reflect a production setup. + +Things such as TLS termination and email verification will not be available unless you + +- use an API gateway with valid certificates in front of the service +- configure an appropriate email server + +see loadbalancing example [here](/docs/guides/installation/loadbalancing-example) + + + + + + From 9271623ec9c819984e418b1315499fc9774465a0 Mon Sep 17 00:00:00 2001 From: Silvan Date: Thu, 7 Jul 2022 14:58:00 +0200 Subject: [PATCH 07/17] fix: load auth users (#3907) * fix: load auth users * fix: add triggerbulk * fix: build pre-release * fix even more french translations * fix: build version Co-authored-by: Livio Spring --- .releaserc.js | 2 +- internal/api/grpc/management/user.go | 2 +- .../middleware/translation_interceptor.go | 7 +- .../api/grpc/server/middleware/translator.go | 11 ++- .../api/ui/login/init_password_handler.go | 2 +- .../api/ui/login/password_reset_handler.go | 2 +- internal/api/ui/login/static/i18n/fr.yaml | 16 ++--- .../repository/eventsourcing/repository.go | 2 +- .../repository/eventsourcing/view/user.go | 72 ++++++++++++++++++- .../repository/eventsourcing/view/view.go | 5 +- internal/query/user.go | 10 ++- internal/static/i18n/fr.yaml | 4 +- 12 files changed, 105 insertions(+), 30 deletions(-) diff --git a/.releaserc.js b/.releaserc.js index 5c4725f1cc8..a7df798669b 100644 --- a/.releaserc.js +++ b/.releaserc.js @@ -3,7 +3,7 @@ module.exports = { {name: 'main'}, {name: '1.x.x', range: '1.x.x', channel: '1.x.x'}, {name: 'v2-alpha', prerelease: true}, - {name: 'notify-users', prerelease: true}, + {name: 'auth-users', prerelease: true}, ], plugins: [ "@semantic-release/commit-analyzer" diff --git a/internal/api/grpc/management/user.go b/internal/api/grpc/management/user.go index 5fd3bc78220..7aa0e1a3e0a 100644 --- a/internal/api/grpc/management/user.go +++ b/internal/api/grpc/management/user.go @@ -44,7 +44,7 @@ func (s *Server) GetUserByLoginNameGlobal(ctx context.Context, req *mgmt_pb.GetU if err != nil { return nil, err } - user, err := s.query.GetUser(ctx, loginName) + user, err := s.query.GetUser(ctx, true, loginName) if err != nil { return nil, err } diff --git a/internal/api/grpc/server/middleware/translation_interceptor.go b/internal/api/grpc/server/middleware/translation_interceptor.go index 6380c3e3828..7761e94b2c4 100644 --- a/internal/api/grpc/server/middleware/translation_interceptor.go +++ b/internal/api/grpc/server/middleware/translation_interceptor.go @@ -3,6 +3,7 @@ package middleware import ( "context" + "github.com/zitadel/logging" "google.golang.org/grpc" "github.com/zitadel/zitadel/internal/api/authz" @@ -13,7 +14,11 @@ import ( func TranslationHandler() func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { resp, err := handler(ctx, req) - translator := newZitadelTranslator(authz.GetInstance(ctx).DefaultLanguage()) + translator, translatorError := newZitadelTranslator(authz.GetInstance(ctx).DefaultLanguage()) + if translatorError != nil { + logging.New().WithError(translatorError).Error("could not load translator") + return resp, err + } if loc, ok := resp.(localizers); ok && resp != nil { translateFields(ctx, loc, translator) } diff --git a/internal/api/grpc/server/middleware/translator.go b/internal/api/grpc/server/middleware/translator.go index 6d5b1dd6691..f42741db0b5 100644 --- a/internal/api/grpc/server/middleware/translator.go +++ b/internal/api/grpc/server/middleware/translator.go @@ -40,16 +40,13 @@ func translateError(ctx context.Context, err error, translator *i18n.Translator) return err } -func newZitadelTranslator(defaultLanguage language.Tag) *i18n.Translator { +func newZitadelTranslator(defaultLanguage language.Tag) (*i18n.Translator, error) { return translatorFromNamespace("zitadel", defaultLanguage) } -func translatorFromNamespace(namespace string, defaultLanguage language.Tag) *i18n.Translator { +func translatorFromNamespace(namespace string, defaultLanguage language.Tag) (*i18n.Translator, error) { dir, err := fs.NewWithNamespace(namespace) - logging.LogWithFields("ERROR-7usEW", "namespace", namespace).OnError(err).Panic("unable to get namespace") + logging.WithFields("namespace", namespace).OnError(err).Panic("unable to get namespace") - translator, err := i18n.NewTranslator(dir, defaultLanguage, "") - logging.Log("ERROR-Sk8sf").OnError(err).Panic("unable to get i18n translator") - - return translator + return i18n.NewTranslator(dir, defaultLanguage, "") } diff --git a/internal/api/ui/login/init_password_handler.go b/internal/api/ui/login/init_password_handler.go index b2fc4ee6c8e..0b88afd2240 100644 --- a/internal/api/ui/login/init_password_handler.go +++ b/internal/api/ui/login/init_password_handler.go @@ -107,7 +107,7 @@ func (l *Login) resendPasswordSet(w http.ResponseWriter, r *http.Request, authRe l.renderInitPassword(w, r, authReq, authReq.UserID, "", err) return } - user, err := l.query.GetUser(setContext(r.Context(), userOrg), loginName) + user, err := l.query.GetUser(setContext(r.Context(), userOrg), false, loginName) if err != nil { l.renderInitPassword(w, r, authReq, authReq.UserID, "", err) return diff --git a/internal/api/ui/login/password_reset_handler.go b/internal/api/ui/login/password_reset_handler.go index d022db316c6..ef567732a95 100644 --- a/internal/api/ui/login/password_reset_handler.go +++ b/internal/api/ui/login/password_reset_handler.go @@ -23,7 +23,7 @@ func (l *Login) handlePasswordReset(w http.ResponseWriter, r *http.Request) { l.renderInitPassword(w, r, authReq, authReq.UserID, "", err) return } - user, err := l.query.GetUser(setContext(r.Context(), authReq.UserOrgID), loginName) + user, err := l.query.GetUser(setContext(r.Context(), authReq.UserOrgID), false, loginName) if err != nil { l.renderPasswordResetDone(w, r, authReq, err) return diff --git a/internal/api/ui/login/static/i18n/fr.yaml b/internal/api/ui/login/static/i18n/fr.yaml index a1671a8086e..10022d80e0e 100644 --- a/internal/api/ui/login/static/i18n/fr.yaml +++ b/internal/api/ui/login/static/i18n/fr.yaml @@ -12,14 +12,14 @@ Login: NextButtonText: suivant SelectAccount: - Title: Select account - Description: Use your ZITADEL-Account - TitleLinking: Select account for user linking - DescriptionLinking: Select your account to link with your external user. - OtherUser: Other User - SessionState0: active - SessionState1: inactive - MustBeMemberOfOrg: The user must be member of the {{.OrgName}} organisation. + Title: Sélectionner un compte + Description: Utilisez votre compte ZITADEL + TitleLinking: Sélectionnez le compte pour le lien avec l'utilisateur + DescriptionLinking: Sélectionnez votre compte pour établir un lien avec votre utilisateur externe. + OtherUser: Autre utilisateur + SessionState0: actif + SessionState1: inactif + MustBeMemberOfOrg: L'utilisateur doit être membre de l'organisation {{.OrgName}}. Password: Title: Mot de passe diff --git a/internal/auth/repository/eventsourcing/repository.go b/internal/auth/repository/eventsourcing/repository.go index bd6d0c796e4..b21acba79df 100644 --- a/internal/auth/repository/eventsourcing/repository.go +++ b/internal/auth/repository/eventsourcing/repository.go @@ -40,7 +40,7 @@ func Start(conf Config, systemDefaults sd.SystemDefaults, command *command.Comma } idGenerator := id.SonyFlakeGenerator() - view, err := auth_view.StartView(dbClient, oidcEncryption, queries, idGenerator) + view, err := auth_view.StartView(dbClient, oidcEncryption, queries, idGenerator, es) if err != nil { return nil, err } diff --git a/internal/auth/repository/eventsourcing/view/user.go b/internal/auth/repository/eventsourcing/view/user.go index 3c232aba375..bbc5d3e1e5c 100644 --- a/internal/auth/repository/eventsourcing/view/user.go +++ b/internal/auth/repository/eventsourcing/view/user.go @@ -1,8 +1,12 @@ package view import ( + "context" + + "github.com/zitadel/zitadel/internal/api/authz" "github.com/zitadel/zitadel/internal/errors" "github.com/zitadel/zitadel/internal/eventstore/v1/models" + "github.com/zitadel/zitadel/internal/query" usr_model "github.com/zitadel/zitadel/internal/user/model" "github.com/zitadel/zitadel/internal/user/repository/view" "github.com/zitadel/zitadel/internal/user/repository/view/model" @@ -18,15 +22,77 @@ func (v *View) UserByID(userID, instanceID string) (*model.UserView, error) { } func (v *View) UserByUsername(userName, instanceID string) (*model.UserView, error) { - return view.UserByUserName(v.Db, userTable, userName, instanceID) + query, err := query.NewUserUsernameSearchQuery(userName, query.TextEquals) + if err != nil { + return nil, err + } + + return v.userByID(instanceID, query) } func (v *View) UserByLoginName(loginName, instanceID string) (*model.UserView, error) { - return view.UserByLoginName(v.Db, userTable, loginName, instanceID) + loginNameQuery, err := query.NewUserLoginNamesSearchQuery(loginName) + if err != nil { + return nil, err + } + + return v.userByID(instanceID, loginNameQuery) } func (v *View) UserByLoginNameAndResourceOwner(loginName, resourceOwner, instanceID string) (*model.UserView, error) { - return view.UserByLoginNameAndResourceOwner(v.Db, userTable, loginName, resourceOwner, instanceID) + loginNameQuery, err := query.NewUserLoginNamesSearchQuery(loginName) + if err != nil { + return nil, err + } + resourceOwnerQuery, err := query.NewUserResourceOwnerSearchQuery(resourceOwner, query.TextEquals) + if err != nil { + return nil, err + } + + return v.userByID(instanceID, loginNameQuery, resourceOwnerQuery) +} + +func (v *View) userByID(instanceID string, queries ...query.SearchQuery) (*model.UserView, error) { + ctx := authz.WithInstanceID(context.Background(), instanceID) + + queriedUser, err := v.query.GetUser(ctx, true, queries...) + if err != nil { + return nil, err + } + + user, err := view.UserByID(v.Db, userTable, queriedUser.ID, instanceID) + if err != nil && !errors.IsNotFound(err) { + return nil, err + } + + if err != nil { + user = new(model.UserView) + } + + query, err := view.UserByIDQuery(queriedUser.ID, instanceID, user.Sequence) + if err != nil { + return nil, err + } + events, err := v.es.FilterEvents(ctx, query) + if err != nil && user.Sequence == 0 { + return nil, err + } else if err != nil { + return user, nil + } + + userCopy := *user + + for _, event := range events { + if err := user.AppendEvent(event); err != nil { + return &userCopy, nil + } + } + + if user.State == int32(usr_model.UserStateDeleted) { + return nil, errors.ThrowNotFound(nil, "VIEW-r4y8r", "Errors.User.NotFound") + } + + return user, nil } func (v *View) UsersByOrgID(orgID, instanceID string) ([]*model.UserView, error) { diff --git a/internal/auth/repository/eventsourcing/view/view.go b/internal/auth/repository/eventsourcing/view/view.go index 0bb91801e6e..54c57e99f71 100644 --- a/internal/auth/repository/eventsourcing/view/view.go +++ b/internal/auth/repository/eventsourcing/view/view.go @@ -6,6 +6,7 @@ import ( "github.com/jinzhu/gorm" "github.com/zitadel/zitadel/internal/crypto" + eventstore "github.com/zitadel/zitadel/internal/eventstore/v1" "github.com/zitadel/zitadel/internal/id" "github.com/zitadel/zitadel/internal/query" ) @@ -15,9 +16,10 @@ type View struct { keyAlgorithm crypto.EncryptionAlgorithm idGenerator id.Generator query *query.Queries + es eventstore.Eventstore } -func StartView(sqlClient *sql.DB, keyAlgorithm crypto.EncryptionAlgorithm, queries *query.Queries, idGenerator id.Generator) (*View, error) { +func StartView(sqlClient *sql.DB, keyAlgorithm crypto.EncryptionAlgorithm, queries *query.Queries, idGenerator id.Generator, es eventstore.Eventstore) (*View, error) { gorm, err := gorm.Open("postgres", sqlClient) if err != nil { return nil, err @@ -27,6 +29,7 @@ func StartView(sqlClient *sql.DB, keyAlgorithm crypto.EncryptionAlgorithm, queri keyAlgorithm: keyAlgorithm, idGenerator: idGenerator, query: queries, + es: es, }, nil } diff --git a/internal/query/user.go b/internal/query/user.go index 1d928f38fe4..a4a4bea7d62 100644 --- a/internal/query/user.go +++ b/internal/query/user.go @@ -292,8 +292,8 @@ var ( } ) -func (q *Queries) GetUserByID(ctx context.Context, shouldTriggered bool, userID string, queries ...SearchQuery) (*User, error) { - if shouldTriggered { +func (q *Queries) GetUserByID(ctx context.Context, shouldTriggerBulk bool, userID string, queries ...SearchQuery) (*User, error) { + if shouldTriggerBulk { projection.UserProjection.TriggerBulk(ctx) } @@ -314,7 +314,11 @@ func (q *Queries) GetUserByID(ctx context.Context, shouldTriggered bool, userID return scan(row) } -func (q *Queries) GetUser(ctx context.Context, queries ...SearchQuery) (*User, error) { +func (q *Queries) GetUser(ctx context.Context, shouldTriggerBulk bool, queries ...SearchQuery) (*User, error) { + if shouldTriggerBulk { + projection.UserProjection.TriggerBulk(ctx) + } + instanceID := authz.GetInstance(ctx).InstanceID() query, scan := prepareUserQuery(instanceID) for _, q := range queries { diff --git a/internal/static/i18n/fr.yaml b/internal/static/i18n/fr.yaml index 3678cfe2abd..68684e83d80 100644 --- a/internal/static/i18n/fr.yaml +++ b/internal/static/i18n/fr.yaml @@ -39,8 +39,8 @@ Errors: NotFound: Générateur de secret non trouvé SMSConfig: NotFound: Configuration SMS non trouvée - AlreadyActive: Configuration SMS déjà active - AlreadyDeactivated: Configuration SMS déjà désactivée + AlreadyActive: Configuration SMS déjà active + AlreadyDeactivated: Configuration SMS déjà désactivée SMTPConfig: NotFound: Configuration SMTP non trouvée AlreadyExists: La configuration SMTP existe déjà From 6463b716ce10698c9aeed78990795e60c57fd20b Mon Sep 17 00:00:00 2001 From: Livio Spring Date: Thu, 7 Jul 2022 15:13:17 +0200 Subject: [PATCH 08/17] fix: handle org de-/reactivate correctly (#3924) --- internal/command/org_model.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/internal/command/org_model.go b/internal/command/org_model.go index a86a8732e0c..d2f2ad3c77e 100644 --- a/internal/command/org_model.go +++ b/internal/command/org_model.go @@ -33,6 +33,8 @@ func (wm *OrgWriteModel) Reduce() error { wm.State = domain.OrgStateInactive case *org.OrgReactivatedEvent: wm.State = domain.OrgStateActive + case *org.OrgRemovedEvent: + wm.State = domain.OrgStateRemoved case *org.OrgChangedEvent: wm.Name = e.Name case *org.DomainPrimarySetEvent: @@ -51,6 +53,9 @@ func (wm *OrgWriteModel) Query() *eventstore.SearchQueryBuilder { EventTypes( org.OrgAddedEventType, org.OrgChangedEventType, + org.OrgDeactivatedEventType, + org.OrgReactivatedEventType, + org.OrgRemovedEventType, org.OrgDomainPrimarySetEventType). Builder() } From 252d0fa8b55f567be2c4d6375ad9c3d6f5f2567a Mon Sep 17 00:00:00 2001 From: Fabi <38692350+hifabienne@users.noreply.github.com> Date: Thu, 7 Jul 2022 15:42:58 +0200 Subject: [PATCH 09/17] docs: fix issuer (#3925) Co-authored-by: Max Peintner --- docs/docs/quickstarts/login/angular.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/quickstarts/login/angular.md b/docs/docs/quickstarts/login/angular.md index d6635485a03..bd14073de9e 100644 --- a/docs/docs/quickstarts/login/angular.md +++ b/docs/docs/quickstarts/login/angular.md @@ -58,7 +58,7 @@ const authConfig: AuthConfig = { responseType: 'code', oidc: true, clientId: 'YOUR-CLIENT-ID', // replace with your appid - issuer: 'https://issuer.zitadel.ch', + issuer: '', // eg. https://acme-jdo9fs.zitadel.cloud redirectUri: 'http://localhost:4200/auth/callback', postLogoutRedirectUri: 'http://localhost:4200/signedout', // optional requireHttps: false // required for running locally From 91771bc49b57bcdff74c9aba6710b6a593964d9c Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Thu, 7 Jul 2022 16:25:56 +0200 Subject: [PATCH 10/17] docs: quickstart changes for v2 (#3906) * docs: v2 quickstarts * flutter div * html * html * common https:/[your-domain]-[random-string].zitadel.cloud --- docs/docs/quickstarts/login/angular.md | 166 ++++++++++--------- docs/docs/quickstarts/login/flutter.md | 15 +- docs/docs/quickstarts/login/nextjs.md | 100 +++++------ docs/docs/quickstarts/login/react.md | 52 +++--- docs/static/img/angular/app-create-light.png | Bin 179619 -> 0 bytes docs/static/img/angular/app-create.png | Bin 0 -> 265575 bytes 6 files changed, 172 insertions(+), 161 deletions(-) delete mode 100644 docs/static/img/angular/app-create-light.png create mode 100644 docs/static/img/angular/app-create.png diff --git a/docs/docs/quickstarts/login/angular.md b/docs/docs/quickstarts/login/angular.md index bd14073de9e..43dacb1ec7e 100644 --- a/docs/docs/quickstarts/login/angular.md +++ b/docs/docs/quickstarts/login/angular.md @@ -3,32 +3,32 @@ title: Angular --- This integration guide shows you the recommended way to integrate ZITADEL into your Angular application. -It shows how to add user login to your application and fetch some data from the user info endpoint. +It shows how to add user login to your application and fetch some data from the user info endpoint. -At the end of the guide, your application has login functionality and has access to the current user's profile. +At the end of the guide, your application has login functionality and has access to the current user's profile. -> This documentation refers to our [example](https://github.com/zitadel/zitadel-examples/tree/main/angular) in GitHub. Note that we've written ZITADEL Console in Angular, so you can also use that as a reference. +> This documentation refers to our [example](https://github.com/zitadel/zitadel-examples/tree/main/angular) in GitHub. Note that we've written ZITADEL Console in Angular, so you can also use that as a reference. ## Setup Application and Get Keys Before we can start building our application, we have to do a few configuration steps in ZITADEL Console. -You will need to provide some information about your app. We recommend creating a new app to start from scratch. Navigate to your [Project](https://console.zitadel.ch/projects), then add a new application at the top of the page. +You will need to provide some information about your app. We recommend creating a new app to start from scratch. Navigate to your Project, then add a new application at the top of the page. Select Web application type and continue. -We recommend you use [Authorization Code](../../apis/openidoauth/grant-types#authorization-code) in combination with [Proof Key for Code Exchange (PKCE)](../../apis/openidoauth/grant-types#proof-key-for-code-exchange) for all web applications. +We recommend you use [Authorization Code](../../apis/openidoauth/grant-types#authorization-code) in combination with [Proof Key for Code Exchange (PKCE)](../../apis/openidoauth/grant-types#proof-key-for-code-exchange) for all web applications. -![Create app in console](/img/angular/app-create-light.png) +![Create app in console](/img/angular/app-create.png) ### Redirect URIs -With the Redirect URIs field, you tell ZITADEL where it is allowed to redirect users to after authentication. For development, you can set dev mode to `true` to enable insecure HTTP and redirect to a `localhost` URI. +With the Redirect URIs field, you tell ZITADEL where it is allowed to redirect users to after authentication. For development, you can set dev mode to `true` to enable insecure HTTP and redirect to a `localhost` URI. -> If you are following along with the [example](https://github.com/zitadel/zitadel-examples/tree/main/angular), set dev mode to `true` and the Redirect URIs to . +> If you are following along with the [example](https://github.com/zitadel/zitadel-examples/tree/main/angular), set dev mode to `true` and the Redirect URIs to . -If you want to redirect the users back to a route on your application after they have logged out, add an optional redirect in the Post Logout URIs field. +If you want to redirect the users back to a route on your application after they have logged out, add an optional redirect in the Post Logout URIs field. Continue and create the application. -### Client ID and Secret +### Client ID After successful app creation, a pop-up will appear, showing the app's client ID. Copy the client ID, as you will need it to configure your Angular client. @@ -58,7 +58,7 @@ const authConfig: AuthConfig = { responseType: 'code', oidc: true, clientId: 'YOUR-CLIENT-ID', // replace with your appid - issuer: '', // eg. https://acme-jdo9fs.zitadel.cloud + issuer: 'https:/[your-domain]-[random-string].zitadel.cloud', // replace with your instance redirectUri: 'http://localhost:4200/auth/callback', postLogoutRedirectUri: 'http://localhost:4200/signedout', // optional requireHttps: false // required for running locally @@ -68,14 +68,14 @@ const authConfig: AuthConfig = { ... imports: [ OAuthModule.forRoot(), - HttpClientModule, + HttpClientModule, ... providers: [ { provide: AuthConfig, useValue: authConfig } -... +... ``` Set _openid_, _profile_ and _email_ as scope, _code_ as responseType, and oidc to _true_. Then create an authentication service to provide the functions to authenticate your user. @@ -89,63 +89,62 @@ ng g service services/authentication Copy the following code to your service. This code provides a function `authenticate()` which redirects the user to ZITADEL. After successful login, ZITADEL redirects the user back to the redirect URI configured in _AuthModule_ and ZITADEL Console. Make sure both correspond, otherwise ZITADEL throws an error. ```ts -import { Injectable } from '@angular/core'; -import { AuthConfig, OAuthService } from 'angular-oauth2-oidc'; -import { BehaviorSubject, from, Observable } from 'rxjs'; +import { Injectable } from "@angular/core"; +import { AuthConfig, OAuthService } from "angular-oauth2-oidc"; +import { BehaviorSubject, from, Observable } from "rxjs"; -import { StatehandlerService } from './statehandler.service'; +import { StatehandlerService } from "./statehandler.service"; @Injectable({ - providedIn: 'root' + providedIn: "root", }) export class AuthenticationService { - private _authenticated: boolean = false; - private readonly _authenticationChanged: BehaviorSubject< - boolean - > = new BehaviorSubject(this.authenticated); + private _authenticated: boolean = false; + private readonly _authenticationChanged: BehaviorSubject = + new BehaviorSubject(this.authenticated); - constructor( - private oauthService: OAuthService, - private authConfig: AuthConfig, - private statehandler: StatehandlerService, - ) { } + constructor( + private oauthService: OAuthService, + private authConfig: AuthConfig, + private statehandler: StatehandlerService + ) {} - public get authenticated(): boolean { - return this._authenticated; + public get authenticated(): boolean { + return this._authenticated; + } + + public get authenticationChanged(): Observable { + return this._authenticationChanged; + } + + public getOIDCUser(): Observable { + return from(this.oauthService.loadUserProfile()); + } + + public async authenticate(setState: boolean = true): Promise { + this.oauthService.configure(this.authConfig); + + this.oauthService.strictDiscoveryDocumentValidation = false; + await this.oauthService.loadDiscoveryDocumentAndTryLogin(); + + this._authenticated = this.oauthService.hasValidAccessToken(); + + if (!this.oauthService.hasValidIdToken() || !this.authenticated) { + const newState = setState + ? await this.statehandler.createState().toPromise() + : undefined; + this.oauthService.initCodeFlow(newState); } + this._authenticationChanged.next(this.authenticated); - public get authenticationChanged(): Observable { - return this._authenticationChanged; - } + return this.authenticated; + } - public getOIDCUser(): Observable { - return from(this.oauthService.loadUserProfile()); - } - - public async authenticate( - setState: boolean = true, - ): Promise { - this.oauthService.configure(this.authConfig); - - this.oauthService.strictDiscoveryDocumentValidation = false; - await this.oauthService.loadDiscoveryDocumentAndTryLogin(); - - this._authenticated = this.oauthService.hasValidAccessToken(); - - if (!this.oauthService.hasValidIdToken() || !this.authenticated) { - const newState = setState ? await this.statehandler.createState().toPromise() : undefined; - this.oauthService.initCodeFlow(newState); - } - this._authenticationChanged.next(this.authenticated); - - return this.authenticated; - } - - public signout(): void { - this.oauthService.logOut(); - this._authenticated = false; - this._authenticationChanged.next(false); - } + public signout(): void { + this.oauthService.logOut(); + this._authenticated = false; + this._authenticationChanged.next(false); + } } ``` @@ -215,26 +214,35 @@ ng g guard guards/auth This code shows the _AuthGuard_ used in ZITADEL Console. ```ts -import { Injectable } from '@angular/core'; -import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router'; -import { Observable } from 'rxjs'; -import { AuthenticationService } from '../services/authentication.service'; +import { Injectable } from "@angular/core"; +import { + ActivatedRouteSnapshot, + CanActivate, + RouterStateSnapshot, + UrlTree, +} from "@angular/router"; +import { Observable } from "rxjs"; +import { AuthenticationService } from "../services/authentication.service"; @Injectable({ - providedIn: 'root' + providedIn: "root", }) export class AuthGuard implements CanActivate { + constructor(private auth: AuthenticationService) {} - constructor(private auth: AuthenticationService) { } - canActivate( route: ActivatedRouteSnapshot, - state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { - if (!this.auth.authenticated) { - return this.auth.authenticate(); - } - return this.auth.authenticated; - } + state: RouterStateSnapshot + ): + | Observable + | Promise + | boolean + | UrlTree { + if (!this.auth.authenticated) { + return this.auth.authenticate(); + } + return this.auth.authenticated; + } } ``` @@ -267,14 +275,14 @@ const routes: Routes = [ Call `auth.signout()` for logging the current user out. Note that you can also configure a logout redirect URI if you want your users to be redirected after logout. ```ts -import { AuthenticationService } from 'src/app/services/authentication.service'; +import { AuthenticationService } from "src/app/services/authentication.service"; export class SomeComponentWithLogout { - constructor(private authService: AuthenticationService){} + constructor(private authService: AuthenticationService) {} - public signout(): Promise { - return this.authService.signout(); - } + public signout(): Promise { + return this.authService.signout(); + } } ``` @@ -297,7 +305,7 @@ And in your HTML file: ```html
-

{{user | json}}

+

{{user | json}}

``` diff --git a/docs/docs/quickstarts/login/flutter.md b/docs/docs/quickstarts/login/flutter.md index dbaed185c96..2cc78b1ea9e 100644 --- a/docs/docs/quickstarts/login/flutter.md +++ b/docs/docs/quickstarts/login/flutter.md @@ -45,14 +45,14 @@ You may want to change the Flutter SDK version in `pubspec.yaml` from ```yaml environment: - sdk: '>=2.7.0 <3.0.0' + sdk: ">=2.7.0 <3.0.0" ``` to ```yaml environment: - sdk: '>=2.12.0 <3.0.0' + sdk: ">=2.12.0 <3.0.0" ``` With this, you'll enable "nullable by default" mode in Flutter, as well as new language features. @@ -257,7 +257,7 @@ Future _authenticate() async { AuthorizationTokenRequest( '<>', // Client ID of the native application '<>', // The registered url from zitadel (e.g. ch.myexample.app://signin) - issuer: '<>', // most of the cases: https://issuer.zitadel.ch + issuer: '<>', // most of the cases: https:/[your-domain]-[random-string].zitadel.cloud scopes: [ 'openid', 'profile', @@ -268,7 +268,7 @@ Future _authenticate() async { ); final userInfoResponse = await get( - Uri.parse('https://api.zitadel.ch/oauth/v2/userinfo'), + Uri.parse('https://[your-instance].zitadel.cloud/oauth/v2/userinfo'), headers: { HttpHeaders.authorizationHeader: 'Bearer ${result.accessToken}', HttpHeaders.acceptHeader: 'application/json; charset=UTF-8' @@ -333,7 +333,7 @@ class _MyHomePageState extends State { ); final userInfoResponse = await get( - Uri.parse('https://api.zitadel.ch/oauth/v2/userinfo'), + Uri.parse('https:/[your-domain]-[random-string].zitadel.cloud/oauth/v2/userinfo'), // replace with your instance headers: { HttpHeaders.authorizationHeader: 'Bearer ${result.accessToken}', HttpHeaders.acceptHeader: 'application/json; charset=UTF-8' @@ -407,10 +407,7 @@ class _MyHomePageState extends State { If you run this application, you can authenticate with a valid ZITADEL user. -
-
+
Unauthenticated - becomes Flutter Authenticated -
diff --git a/docs/docs/quickstarts/login/nextjs.md b/docs/docs/quickstarts/login/nextjs.md index ea80fa83bee..1b34ab03a34 100644 --- a/docs/docs/quickstarts/login/nextjs.md +++ b/docs/docs/quickstarts/login/nextjs.md @@ -40,47 +40,47 @@ NextAuth.js exposes a REST API which is used by your client. To setup your configuration, create a file called [...nextauth].tsx in `pages/api/auth`. ```ts -import NextAuth from 'next-auth'; +import NextAuth from "next-auth"; export const ZITADEL = { - id: "zitadel", - name: "zitadel", - type: "oauth", - version: "2.0", - scope: "openid profile email", - params: { response_type: "code", grant_type: "authorization_code" }, - authorizationParams: { grant_type: "authorization_code", response_type: "code" }, - accessTokenUrl: "https://api.zitadel.dev/oauth/v2/token", - requestTokenUrl: "https://api.zitadel.dev/oauth/v2/token", - authorizationUrl: "https://accounts.zitadel.dev/oauth/v2/authorize", - profileUrl: "https://api.zitadel.dev/oauth/v2/userinfo", - protection: "pkce", - async profile(profile, tokens) { - console.log(profile, tokens); - return { - id: profile.sub, - name: profile.name, - email: profile.email, - image: profile.picture - }; - }, - clientId: process.env.ZITADEL_CLIENT_ID, - session: { - jwt: true, + id: "zitadel", + name: "zitadel", + type: "oauth", + version: "2", + wellKnown: process.env.ZITADEL_ISSUER, + authorization: { + params: { + scope: "openid email profile", }, + }, + idToken: true, + checks: ["pkce", "state"], + client: { + token_endpoint_auth_method: "none", + }, + async profile(profile) { + return { + id: profile.sub, + name: profile.name, + firstName: profile.given_name, + lastName: profile.family_name, + email: profile.email, + loginName: profile.preferred_username, + image: profile.picture, + }; + }, + clientId: process.env.ZITADEL_CLIENT_ID, }; export default NextAuth({ - providers: [ - ZITADEL - ], + providers: [ZITADEL], }); ``` -Replace the endpoints `https://api.zitadel.dev/` with `https://api.zitadel.ch/` if your using a ZITADEL CLOUD tier or your own endpoint if your using a self hosted ENTERPRISE tier respectively. +Replace the endpoints `https:/[your-domain]-[random-string].zitadel.cloud` with your instance or if your using a ZITADEL CLOUD tier or your own endpoint if your using a self hosted ENTERPRISE tier respectively. We recommend using the Authentication Code flow secured by PKCE for the Authentication flow. -To be able to connect to ZITADEL, navigate to your [Console Projects](https://console.zitadel.ch/projects) create or select an existing project and add your app selecting WEB, then PKCE, and then add `http://localhost:3000/api/auth/callback/zitadel` as redirect url to your app. +To be able to connect to ZITADEL, navigate to your Console Projects, create or select an existing project and add your app selecting WEB, then PKCE, and then add `http://localhost:3000/api/auth/callback/zitadel` as redirect url to your app. For simplicity reasons we set the default to the one that next-auth provides us. You'll be able to change the redirect later if you want to. @@ -95,6 +95,7 @@ Create a file `.env` in the root of the project and add the following keys to it ``` NEXTAUTH_URL=http://localhost:3000 ZITADEL_CLIENT_ID=[yourClientId] +ZITADEL_ISSUER=https:/[your-domain]-[random-string].zitadel.cloud ``` # User interface @@ -107,7 +108,7 @@ Note that signIn method requires the id of the provider we provided earlier, and import { signIn, signOut, useSession } from 'next-auth/client'; export default function Page() { - const [session, loading] = useSession(); + const { data: session } = useSession(); ... {!session && <> Not signed in
@@ -129,13 +130,14 @@ To allow session state to be shared between pages - which improves performance, Take a loot at the template `_app.tsx`. ```ts -import { Provider } from 'next-auth/client'; +import { SessionProvider } from "next-auth/react"; function MyApp({ Component, pageProps }) { - return - - ; + return ( + + + + ); } export default MyApp; @@ -143,17 +145,19 @@ export default MyApp; Last thing: create a `profile.tsx` in /pages which renders the callback page. -## Learn More +```ts +import Link from "next/link"; -To learn more about Next.js, take a look at the following resources: +import styles from "../styles/Home.module.css"; -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +export default function Profile() { + return ( +
+

Login successful

+ + + +
+ ); +} +``` diff --git a/docs/docs/quickstarts/login/react.md b/docs/docs/quickstarts/login/react.md index 69e7f0c2a8c..6f9efc546db 100644 --- a/docs/docs/quickstarts/login/react.md +++ b/docs/docs/quickstarts/login/react.md @@ -10,7 +10,7 @@ At the end of the guide you should have an application able to login a user and ## Setup Application and get Keys Before we can start building our application we have to do a few configuration steps in ZITADEL Console. -You will need to provide some information about your app. We recommend creating a new app to start from scratch. Navigate to your [Project](https://console.zitadel.ch/projects) and add a new application at the top of the page. +You will need to provide some information about your app. We recommend creating a new app to start from scratch. Navigate to your Project and add a new application at the top of the page. Select User Agent and continue. More about the different app types can you find [here](https://docs.zitadel.com/docs/guides/authorization/oauth-recommended-flows#different-client-profiles). We recommend that you use [Authorization Code](../../apis/openidoauth/grant-types#authorization-code) in combination with [Proof Key for Code Exchange](../../apis/openidoauth/grant-types#proof-key-for-code-exchange) for all web applications. @@ -54,38 +54,40 @@ This library helps integrating ZITADEL Authentication in your React Application. With the installed oidc pakage you will need an AuthProvider which should contain the OIDC configuration. The oidc configuration should contain **openid**, **profile** and **email** as scope and **code** as responseType. -In the code below the authority is already set to the issuer of zitadel.ch you can find this in the ZITADEL Console on you application. +In the code below make sure to change the issuer to your instance url. You can find this in the ZITADEL Console on you application. Replace the clientId value 'YOUR-CLIENT-ID' with the generated client id of you application in ZITADEL Console. - ```ts - -import React from 'react'; -import { AuthProvider } from 'oidc-react'; -import './App.css'; +import React from "react"; +import { AuthProvider } from "oidc-react"; +import "./App.css"; const oidcConfig = { - onSignIn: async (response: any) => { - alert('You logged in :' + response.profile.given_name + ' ' + response.profile.family_name); - window.location.hash = ''; - }, - authority: 'https://issuer.zitadel.ch', - clientId: - 'YOUR-CLIENT-ID', - responseType: 'code', - redirectUri: 'http://localhost:3000/', - scope: 'openid profile email' + onSignIn: async (response: any) => { + alert( + "You logged in :" + + response.profile.given_name + + " " + + response.profile.family_name + ); + window.location.hash = ""; + }, + authority: "https:/[your-domain]-[random-string].zitadel.cloud", // replace with your instance + clientId: "YOUR-CLIENT-ID", + responseType: "code", + redirectUri: "http://localhost:3000/", + scope: "openid profile email", }; function App() { - return ( - -
+ return ( + +
-

Hello World

-
-
+

Hello World

+ +
-); + ); } export default App; @@ -100,7 +102,7 @@ npm start ``` Your browser should automatically open the app site or just go to `http://localhost:3000/`. -On opening the app in the browser you will be redirected to the login of zitadel.ch +On opening the app in the browser you will be redirected to the login of your instance. After successfully authenticating your user, you will get back to you application. It should show a popup which says: **You logged in {FirstName} {LastName}** diff --git a/docs/static/img/angular/app-create-light.png b/docs/static/img/angular/app-create-light.png deleted file mode 100644 index 05a22e7fc23aff64ebd1d44ba821e610c00ed1df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179619 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®{kWj`4N(}9{>^JBcxBnamC@izhJ@pat+Qo#i#7+RXk~$( zKYe9(6vJ{@>jO5yiv>#aOwvxJV%zdq;YN~sTC7s3qjWg)l`O(y2YOs%gS_gp=&^XM z(kRaWntTc+U4w35m;HQ1^6`pu+O&LsJ9sL|d8sh)%8t#)_HIN9rP`*8-Z{SNeB1N2 zDo2*>Ci1q~RhIe+{z=f?sQ99ul6Z{`$rSQZ^!T>r6p%(HIy&JmKe9HpxvEtgt} z=hox;nfMnETEAt5llDkQtS*1mX8IV|ZQ$$~6E9@lZY{xCCcQrXEV|46>Tw&QM}=(! zGgtuCLkqiHd$P@GB892p=W~V9Qg8U6Fc&lF*G4;Ne-)Z#Z=dy+qN66gF4O0ft&!!& z7wR*sjF9U}Oa3MJx8OSD2dc*WbK8vJgN%Mxk0z%rPRJPl%|p$Oe_Zk$DRn;Aw3L4Q zUERg)rNpDO(KM~$>}SxvcOUTJl&W4lDwT&528WL=||QTr%qoS?lsG+oFGO=H}DV)Qr%|S2RB0bkpZOiMnE8AA6mmlIE%@;nnem>vIjBePsQ@F3XAGY24T^Mf6hoBu`{6 zcfc3UiL5Y>%}neNMK4o8KB?zRR5a5VCXA zIsWohUgBEUna#W-thUZ)t;zhVLi{0+mCrG8%qUkG{THi5Ym|{j{PyOD%mj9T+L^2c#y385B}z<9|EO>_co^2%TDPp;FIin}-U zDFgAV#ZDcT7sMx$D6(I(LLFW-kx)2}mzi?6)6R=+#(1({f(gOt**R=~lB~VMf}hLe z-t%6g?UjO2|Y%!g?dRKq{BX%w-lhov>hJRcHB`hV|?}r2ux%bBG zV-N^_P*lcN%uegRMIWI?U#-PiZMCLMbMC`gpix87i!U=hGy+Tr6nLQ+ zhYLx>BP^x0ptKnJt;qrXH0D85I))&kkX>Yj4Nm**cjMnSSjKL&~#l*)e!S4c03j!BqLt zpE3vAl?22e)pNFKQp|=GQ=;{S4x6F*HaG1~i8k>L@lkg0Nc2Xi5clkj$=h9GkF4E} z+Q{)z!p_W&&yP*T)DE1?mS5!o`q0|_fmamEoO{NdoF02V z+QJqVWPW%4I4I~h{5;rtVYGIv(~{Stu!>M8?H12ayTAIx;0}Lt!}stoey&=#kB@uR zX#Q&XR69nO_>Xz}hyzWl?mH~i{SamAVOcHAHw)cZFY=2xRxHkLs=b6(hyl8_CAin$ z&v4Esa`_Dg--6s2;4t2SD{%2f5VIwNWIe>2aj;|5b*ZlwDyO;NOunR&n-F`#t(-7l zw)*O?-%>X4LZL)t$3#d_LpoR8UR!ztK(@^FMw3-ZQF z1e126IZPy_ebE8aveNbV~7mYOIb2AerCQE$AKaHnb7~(vN*bnkZ>`(BnNK9aD(QhO#N+hyD z5n+LNLZ@;>sfIN)30b zf6djN`_`j5Dz zaRtL+Eq?O_6+Pc>!gENk&|w`(4U2CYrpcO?W?t-)3ORb!CYoZj-0~C*|L;&!q&`FD zKPix(j~3orDIFg!CEwY~K=H_Ai)9z#eg+Hv3@bc#_{drSrRJnod`A&X>1cBaIbPhZ zjG0Jo9RFT^WP4Kf9j%%ydMcJzqf_?m%Zg=Z=&MEHRd0dHcJ2fd-QFFa6VuI1Tc zG^Dp4+&J>JMXtYMCQ4^5OnrQ&Tu(Jr6*oD*Y%X;|nDITPhpQcx`ce^o^3av7uamO% zUF>TNO-!@!p-#1Lk>(m)bdh2qOa^nO=(?dO`f^CxoL8K1^9HV$To`n0gBZ^aB!nJ2 zBsH%+H-$OQaRNo87xTb6!ff6kFn3x)3%8K4YSpfD;5vdD7J~C~$`^Coy?!_-4O?rM zoKaq6)90D3L|n;k%9`K7NG`@J=Z1*sKrXPBO-~P1cYS#2U`^kgumi1pb8UrabVPfW zmKD05rrc7oX)_{y#W%mss4v(itLa;ZTaXf6bdXsuyBTMu)(%l(RTVEteU}Oe0c;^T z)L#lWaPicEDmF51>0gz0easpw$o~C_tA>d67*pXw10jrj*zLw&vhA0)`ztL5BcSa% zVO~UXVH3fGyIlS^yZU0MKV+sTd-3!Z8Q%^)4b?TYd*Yt9BVOO=ktjNZ(VlZFV8cW! z{&;uWu~x462-H;X9ql8nODk#at6)=J<>F(bFroELo_zbzBw?2-r}%5_vaXP=vN_g! z^%pZ`55(&5w7{`)e36rqe_MZabk$+|i)#WJCvA#xoiiqJnxE;{4|1MFG0|1MAD6Yu zHXeKy|6#g-b+rjwg>%dV!~`|V8)6eMWd{#?v}&AKl;saCWlv4aui1F_y~%y-^>Z-J zwCzFZ_!pFl*-|0#CF=l@X1@Hq)Sg5OTNjnSy;NwY3+b^R*y=;yGD30NBj8n_y$X#yFtNvVhx zOIwFb;Fd`dCE=*zh1Iq-jW%&_QQ=MP!!72GIpJ`%dY!)lI``}!x&@N=usE0XUvHv5 z%wxTh_jYYXXOkm?DvHx#qi=@_r_C2bOT%6@auv}#goq|kTGjxEPo!WgXL``W*on1= zdKT?MiG~`C2YBab^GI|0s`@4VHJ^rj9-_R{prh6}8GjV1k8uq|KvPFlio~V`1!_qe zN7R+MgcZ^YWG9FY7WScWB8A^EglXJue`-WcrBmtnLZP*IO(0sj25HNvl-U9XCA82n z-U|%_jPm)Z$-^?HaPK8SB)a!|&V}Xy*Ss%{6P@xuGlNtlgv8Ya1}DqQ;u=Obx5ISt z!Q!EmsGIbbD|rB*rrT15RnzNu~e^e8zMzVxt0WJ~G%ASRvLpaRf4UI81W@ za}KTuqEU=$<^<+0sYx0~@(LA)A#huZTOStH3~ALRZI$nYjjwKO6$7C2oh{Xc5sfPz z4@(`ccc9C!2J%HSBe(t*dY)a^0Sb9rzn5+`5B$VwXP!quKkTW z`6M7P#a-5xr+gF?E!xte4mNMK71?|$xL$14yNbck^HjJM)bnLS!$jQ8NubD*->GRb z@Shm67nK1txZWt?P$MC#N#eT$9<8X@8Tomi>A(`Zc8-0c9^J7x7#eamtD;2GR`k%0 zKS8qtRYs3Qed2w&@n&I}v!8hVI0kNjT6O$<5GikE>d z%s$XS{itZ@tkvBEt(F!k7_}9;=#F65~39TOlLo!?4Dc?pkXI~;Q zAABVSFnLQV@8(o2vCE)+IlZZNcdHB+C|P-ruhUcluyP9EgW-Ypg9w}HpC<9XKA$7) zH3?+@fK!X-{yrCVO#?nfnz~r~dF)c0L7H3Uit>)&HoacP6S1}cdk($t%6d=zbGa`c zyz$I6LM6h~xLaac@CAFrvt5X>#&d2=M~D7Qs&w5!Ac5?Jaly~c4M6N+j$3&5Q;>eTv>iwTF`;-QezSFA)geSh>tBQ4kpRt@@7I_2en2~c}Tb; zuPNWWuagPTO{V7Pd)kxX5iO6gA@GNTM+ncWM52wt7EkJOYVFAR@7TBX7KMHt2J3wc z@{gSlCjER=|EV)uR$YhZA{a}p(KKC^o{4)BW0U>3HY90K?_)8IYsdEeZQA(7EhG+eJ|JerlD`&W6rmKUXF>8T;#n1VEeRX+WzMQ)9yXHeG0X0=fgIB`7)$Vd^X+g8ZgC zi=u@Zwlqw+F;ru)0j|)(++isP(UMX!0jn*F46Z17?7id(V;hhmJW9PLY18^Y z!M+fL^SB} zxXr{@L!(cxsVQ*ngj|XlUub$TtQPr9GPGECCv^BXuEz>vZrEdV<*hf_CUR5dGsB03 zy304dkxBeP9-HIc7(F547rxGmJ89t$qyrD%-3dH?*eQnFC3nAv5fdWX{5WVgL3lNq z2`aTQxa`2vm3uT49fvp>TG|WW3H>_tZ`(k|te(0jM3#B6%^J(tAPJOPDc1VjRU1Xu zG!4GV+qc8|qe+~-EmL`n?=OQA@XzP9`oIE0Ia@pGFiN&H{a4V7LtH@@H+XO$Pu~~6 zKj#~kR=zud0aX$2t@@h|&~k zujP#k9FS;AW2vCD-9yZNZIL=Cp`AYaK@}QB*aFA*L)L&kpS)(zj|wzY*w|#cipQ|_ zR+~kmt!G==v_uO!&Uc&HR3EHs|`SGg&uUCbY8G+jO&!I%4*J2E^{X1>4f;@AyxHX0 zctO7}FQYFEiEa#SDL!1=dfDZ~Ny{6uR?<_CQwuOTQs7xWC+He<1ktk7O1o{%KjtpF z_H3=AlD)QS<5V0~g8DhZNlRNl#FkD;Fw81S+fT+k&oJ4^(Z){BV}2-fQQwaT3~~oi zw@>{n*vO>vmihgLR$>MBVWbP;C5?-!NM`=b6;r+^^!2{pPr@@O7rC<1??MTM!*4D` zH*HObx#_@lZyqG(E(X_;>q$GmTElYdE~Jf1Z!|MI5UNvW*~?wF2!7`OowyRcS*Mho zSNs`EjbCTS$`sfh?^cj0C4gYBgiwig<&VHz;HH51F;JuXX8&fR}VZ zcl&TCE0*boO`9BZjoMNEJ!hdstHSAI@jAw%B`&mR`=f73253jU#BiaG?fm(A81 z_4#!orw6yUyl>*2(#$L0y4I=R2Ih0RGW`v+1P%e&oD)OR4g9d9JrxL^78GfC?%sadvwR($J$=h})|Q9;U*&rJGs zzQZEK%u_k_>5`^{SGYJmjN);{sIC!e9?^%6xJw@$=rl|mtyQXw3G<-5(TCnNK_#ylH!F}QZ z1!x0w)_Na1=H^H*Q)5{Cz5i0az#ilH5y;kOd2fnc(BXH%YyQL9O#Yp0G z3zgHgTN(42Ao9S2GLvVe^SK8de?OBuGdK{bEnr*kUTbho>1H~Ot^_9PwwSZh=$4(t z$e=Tup6#3$t!TT|MPQjNy(-#YWn6)AKS9Q#f)mlf7}xt`|fJgM$d4iMJQ*^nd0RJDxp9=Yp?k zb`Sz-vSTh0T3ScS&+rcbvSMux@fIbA5<}dV8vT@kL8s2Bsc#HNK#NXUZFI`K9wa~K z`%Gu6&ZR_@cbXf7Utf$qT@&!7Tx4;%@Pa(w_<(F&%_Wo2-$gxIJghj$6p+1pLGrd^ z9{IFxLK8gT6^fCa!tND!5+ymzmm!JmG!u0Aw!(bwtMJMv){5TDfrTR4nLNAVWSHh) zc^XArd_LWK`wZi8?<5rfB97DSp~3whIW1YI@9W7l_U^RnGt;=&>tvFzA`6KL%qc!(#PeU3;^dG!KM{ z<~T?Q$ZcYzB7K`^brB0BXXf~|^8t?ACf;<*58bU)zQa}E-0Y?rVqu|vi~NTO+lKL9 ze8~loV3)EG>* z$$31&+#u^H&ZgMxxK0**Qj>l4qXB3v@&|Af~*LO6~EHcTf&7T6M zVkYCOYUFLuleC(?>VYRL7O$FQEjZB;P{~>+9e%J+C z*;-zGw~c4v8@}AC_B;R6rzz;%s9t>{QXOLMadDwy)Lv>HHo~aTFM`r>uyZT2O=k?0 z9SI4J<-`*~d}S!R*w1eYIPBy)_i;EUhVRU=PSigAYMhZ58h|avS3s#-Opij^75e9a zEn5dD{|;EX_WV*a+$FzIxiI~;)}2+1Cc(3W-7sYhi3_B(YB%}y4wTiCI9(FL zdlb+|6@TA4b)o>inJ1WG4GYg?=p+_sc|1I&#|!y8%NI0-6hTv{cHxgIO|JL*_GrF$ zO3T)rnrrhcnaI44{+Z_CPh^VYeyk3kW1S0_JY9=(2g-yZrb#b=TrQ=^%^D%N%+^VHSh@7#xu{~#OPdQ|q}@8!$sdwapR zI5z(A(q687p%nV0sK_!%pa98y7fHC1jS~=uZg9t`oU2e?#_zU-}u?1qnt=!p=UszUR4SM8ik<^4L&T=J-nsle&)&1&7`USqJes)uSG3Y!el{1(6?Il0LjPZW?7yG( z-}m;HH}IE#{&$D`<%RtJ{bX_2<>|)PEl+mgfr|H0gNl?|oV5qU6?l2T0DmV%!SeNg z2z&phg?F!yV+D-AMhyR#fR>Hj4<4I3h)C`blY4Oe zGAQkLfOvYPp(YDkO9Rs6b;1fRzm2K_7nCg^xl;xNh=+iB%IDRwOKQ(Kcm#)mPmVzw z74U@(o~Pa*C_+bv0WIFitkm?j{9URj;I=I;0}ji4cEsU3m!&9iJuiWltR*0vED(cf z(gUBUK+~coUXwlSH|C`)qUd(ts9UCT9yrEU>B%&Fj`RZ>E{KJyA2J+C$;q5NLNYbG zCNM1+;CbZ0Jty@L$e;Sp?+V!(gaJA>6zJ6!|IwtC_E+NkzW}Pwy#ag199&dD#TXAP z>BnBm1F>X0&|N=vAu)W{otFT-ZrrFN)lRr*W|8B!S$!J_OiguAqNlK*k?*dz~A#Z(PArRNeJu6 zmw*-z%{Aa|?3i$VsHK7i(A6HkBi(;x1^shq^t|@Qv+>w*Xu0y+A02n~KV0oRtg$|R z)5MPev)EOt0Km8~)Svp1@3E`k?bTa@-@5?J6l%XETxe1S%<`wZH0NJ1pFpR=m+nBcDD#r7>jDp_|^dibk5p|QaQ8|(!HXv|BD3*MPq zQ}6)!tEwXVcLw&KJ2>#-^`%=&Nzp}c^`;P@UEc7_pccVQ3i8^>{Rg#yoav*Lu=j%I zPy4zy{I099u)BA4w_^3K22GvV{h*9pvw($LNTBYjQb>FR^hT3Ug>5f$1bGLcRy?=B z7i`K51j=asZ4_X7Z7G&2(7?Oj@b;|xy8-7>^u z@sOqGXxY0uvukg**2BQ_{`~553JPPt08#5`_u1Uf|f}zGo1I3ZgbX5c}`FakOSNfB) z|K;_`x*k<(Jrp(kkjL7e0OKhWnr>^4QK3Dix0V{7R0_j0tp=9;}D{6NUcYjdt=G2`MI=x)uWeiz!ocnVzuwWu;9Do zF?hu_)UWtwQ|^hFwrfkD=Tj(A3z1mFYW@!05UI0d1FB96L&j6lg zB+p^_W`}wk;PO(qg9e6fescxMQJ}j%+GC$DTO&935_l`%k*%99LTeJzRn{IYgYx2* zUY#iBcd3dR#sVG>LX|~vD^UMw4EzM5_lM#hk0SW&SVMJ2;LL}Y4cMA~U?le#5D?MU z_7j6Za@h&U4){L|4s!yshCVQH&rf^UC0|j(8pb)9lzzE4CGCY%cR*K_zo%GtayQ^8 z@>mnWxAp5feBJ=A|3taok{e)H|%ouLw2B|Ha;021M1Z@572+RC0^j{78`M?t zu0Druo7GXVGuV_nl*$_=ue+*EPak1fGhspu{$s1`{H2u>0=4YP?;~If>mulPIB-ba z3q+1%-{085+?oT&q;w^(vO~DH5b)BK!%W-`J`jjRMozSeM!1dul_wX#UqPtA{4lWoLJ4(rBB78BUaE_4NGG=G4+MCN4W32e9y62_5K>Z;OzAy;1jWT#FR}_ zVe;5xM5m@@62w?H0J4o6ixWHBRT^LVcq?kuJOcsP$s2OB4gpobDnB*e8+GB;w*39jIw^$ zzKH){50&7r_oH3G{art200k5*Mh|yZ&@SoCl%F%r!3CMNw-9Pis8OT8^tPSKEq=hs zko%=1gFnpqF5}nkGv1GhkEwMRH8!}zfPzo?xQZF`HIk1b*`4!K-c-+U5$RJXBEti| z?1*@;0@Z7f^d{`|-fvIpSoF|Ky_v=K`iXi6kRENrK%2*Kc>CN2{h+~ZTpakBX zNS(TSvK5JR#PC@A{^u<*!(=A0pBFFkI;;+2d{;-c0&tF})q{aA^$ozl@!gm-he}~( zGc5t`lrnNAr4_T24BFA`cJJ0K@i&bJu!t<}s*52(#p9&IQi&5l3`yrjR9=&ImP2M! zoU?jXQ%v9<5a?6QXfo>ElcihO?@pB^tRn4+n<1Z87B9;J^??V@LjO(hJXGi1q!lZ{ zxblvc3PZxZCDpw0dGd#AMLpQD($TU%_dY7`f1UE8Akl;^eRwVGEI(1t(zh$3^R!P7 z=w?-}&ClQN`RaofxllM-BeG?9{TxI*C(Aw~ugg-WcohVuKK>{~-l5vh$eVs&hjhqX zM*t!+J@*rPes9=@^uj>pR>wnKb`D{DK#3D$ZCjP%iV#|h@rslqHh%@UVkosw?N4&& zuO<7!5zQypHL{f<(u(6VPW(5%-CIGwVsKK4=*C5@*-} z{RJsvPp1cs52~>Tk9A&S+n-#Ij^2AF9!Cj?t; zvPSf7XR)h3_YC;4C=9r2!=6JoSG#oge)&mNb=<2x4Z8#&QNfRXx{D$sVDXnXTv$A=*S<@@RH}QMTB+cLB)F z8G{(f!SK@)eRlz<%G08kEnj}Pno91-Fi9hKfxKMV)b(P5%=ZJx>M%)U+Q1nIi$-6^ zkXLY(e{{j6W8Vq_oNa3S{4mOuQ=p{z`RcHp2%t{s*x7XjB&WK~jzF8ITyW?3YxdL@ zZwR1bE%8!U)65V&;StrZ=;T>GqSaUs_#PwrANw%pdtn+l1ZpU=5;Cp4^YmoHy^>q? zd)LJ)w_l(mys9rm(F}u%0G_z+lj6>GjkK3pT6npxYMN_^?Y6*27cN@f?{)Q<=Fn#I zzAV~&<)o&m3!UEPQy}Bg2Z5swf(=Vxd5G6_9~t`QYZwg_ZFzNpbe*++_f8<{p_cmh z821xT9MTF(i{;E+;6V=4*U${*m+{DHDCsAj!=VLe@3wBXV?6>$&~({FJxj1Z5&L=~ zaPC0b?_?aHdb6L^>mC9OLwF0^x;oEtoE=0gQ+jbrfo4$mlY@nk2G;)rdHx-6idmn( z-$MLxo{!UjFL1R(0&ik~`77=os!K>$q?Q59Dj6IMmqIr5WW|lV79Obt-^8E!GC|J$ z>gQKL;ZT|GM~-!%MD`gib^&A$>@s%NMg~|rQU-ur(by{Rhqf1W{76{kMwoS0 zdeVck#XX|DwpF`0lHJBDD>te~D(se~VFRKKSdgjOk_@M@!nZX<3)y^39KDJ;OkCZ3 zEuNFC&p$T(i?{h_p+syQ_?@fc;Hi5p8oh5tKamw4ualgLbe_m~Ne;IHOrU8nTeWO; z`;i0px{JZ<*?TcEbcr9moO%y|da~VCcEFv7{r&pxZ}p2S)gVls-b^i1{$9nZ0)2qf zwp6H3G&+A3ys~dVnrf_ltr(;}M4DEhD3ZsY;9Tgra0iWhu77PxW*wBz12*i%7%x#= z(w)0Kqpz5NP^e>n7_$a`zVf8o;Fz~3mikpnB1c?XVtC6}qo%<1IV$Mn#Sw6zzQia` z7C7So?d2ZfbeMIa#;2uAI;@?xxeF01f}WbZ7X7`t8UWax^m8SA?I=}1pSQ4VrUF!9 z_z{V9{9&(y__2b)KCu=*{dYo$rWpuvJx&n-cPjB{9N#PM5iFjWOe7wwbWOIbv z2S6|NV%Ceo`YWA$beSN6=q7`NvKh#+aAaIHL!}uK*LZlQfG%NjWgfog`z(tFU*bIP zC@*T&O5)lKQcXaiJXYbRCn&5a)&ml^Jy(?IvQV-YDVl+k$$otw^ zHB9GSCR1_7Pfw2^{7=wDjQJ9!pd9KTq3*E((I`xamcmHpo_YW|uUx)8&_+b(oyE<4 zQzKKbr<({B1z}^r@E@mb3&cK0fXP{PMXS0+GUt~WUFU`NlqbJ?T5n)pT?86+L#<)V zW7P}-D$>N;6GaPoP3XSEKb_Ftm!FR0d{nLOh;-HrOVG_C$e!p zz!i3PWKY(n`n0%CcmrPuDb}-@rIH@_kli?IW>QuF+O~arZ^RZ*$NcAQ8Lan@)wb+i zdFm17>m{kGz$;1`QTGX5Krse!N9iM9cbO$<8=zEaZ>R)1`phi46}?q3ezb@t zp@Bx)ckOA3@^EdGMT5f|W)mZNChsg#!^ncszl zh$7I$EK1Ux00RkmHYY2{*kJ9z~Pa{Kr*F0X*;7F95Xj zql%cS&L-(fpUcm^o2ZeWATR-p!|Z#C!Zkc5T4h3jemAcv3Z`PJoUNXVoW|G_1wyu@ zGzWUBS{e6n0hQ-E=(u;j!SfLa?AdOFjw_|I z#qn6`#|z&<=q9)I0We-^_}qOm^$bm^C#OR{_g?f$;8NebpDQ1yzCvVaV&jz=ql$@f-fQS~_9vIZ3rcqq<0!uPWSj>^wDM z0&{A_@^@Ybyw3_hmq_%Uyh$=U!$zO}|Bfj9d7+uW^rHC$4m-p0 zO+d7%q4FXragFGuB&&#yB9afJTBQfm4Su=;;kUgcb078{lDFD`q6%BBQcO=+U$(}1 z7_`e6Qp>Fqgz?NOf7gVZ$g>nN?*?vqgAU6V8?*0&CEzoEE&lA4O1{@@?`;e6Lfe@D z{*E-?oRTg8Yj$gEmlQ4V8>P$-=9e#~zhQT({yu9ZYa2*E&|vi6DsB_# zdU_=wFw!kcHW=ig*I@JWYEs!xtd*)iRO-e_!5;6rKJ|2;%YNWpNTf?rdd ziox(h#_G^|_U$e&rIj~b9rGQafijOXgz#P+=Tb7f^IskYeDU;+yHLNTFfD3qI0!z` z8T81@5P3^rD+9`Svt2HdwJIA23GcpsvwmRw-w);8cVch=6x}>je)vBg7<>u_>X~yb z9GNM~#jhCWdOqkg!>fD$T{7Zd|0tLq zJb;sJ!jSxbUn~$SdO*SUo!&`x_}`xr0?XPKa;e?=zuK|$d;0;1s7UhJi~nag=IX2u zcmUXKQwPHTGk5(blR^LDt{x}`L*HipJBj+g{?T0pbj~v?_ATZ=n%Cc9;RTFM(3oym zkzM=WpK`hnPBQ(K=&}F4NzuFalLmNGdiv&1{_9po|Du@?Jb;j3=PKR*-b8^vkIY{fX%w{zoF42a(z+2X6+oshd`0e`ol|A&`4jOfYIr27&c4KDKVk`edrj@FlbMzCij9T z@bunmqyN*R_)$X2M35_cIN}?Ch`3TlC|mS>M39d7Q7;VV#78X5@={o-j|C3aR2N%l zGt=)VUHhF@h3b1qhtLgCK;Q;|e7r@Pnt#krWdu@ll4HNpFPIr5^LuM2tYX=oxP0HZ zQ9}X8{8i8)R=PWIe$D*zYu*V`wrWpC9KVDF#!$6ctdAt-#kpD5Yc8iL|G94$kEwd^ zk^RjXBeSPRyK8I6dV-)-Yo^~c1RmXlpSJeiPvC%+y!LA)nS8}!&o2>leu>-O%2o~U z8<^MDn_d|U=e$e{=tG8#DOkL;H_we(qRaWy7@gC3u{qtqXSdjy;~nsNB1fEDwgM0*uK}c?X}pIuO2R#JAXmF|Hr?qD=5tOpfyIp-iv7>kYmE_m?kb9^(sVGn_+5Kw zDB_U0Nibd8=3#v-q~Th@?ei_{fnvSBaBI6^P0*;9l>W!>=W6v9dw!~i#Q4iylX?^$ zpWk%{dTngLUB@903@hI>`zyPTA#wCvr3fts!kx70=th4(`u(eNKu8tlifZAqS_XA? zOK`(%J$%UN-&skpUV_lE9x`{v@k7MqIgeaI4pwXZ9`%G@syhi_YOi*Rf=~BdN)LzX zmCoP~{d};lJWzbrN>Ni{?4B1`#2&qo>yDWJTw-AS&mHz~y^K2BX^d~!l=>m6nHpWV zEdd0#BfiAUmZy*{tDl3MyP&5iHOv{HFahASPe;CT{W%LTv633n-a1fq9Re1?;&4qd zSBqD>!Y=a!0CjdzZR{feb4uhyzdv?8${+9iWEkFLXxTHe4IxTEL(tIeO#lbAKus3~ z9q7r)5{`hi8Z>QFXfP7hdO?7HQXqj>F+G}A@@8b%=RwE%f#=C-lfF+=)VSc@kM`mOU9kxCo9 zwr7;JYY&9Jw%zsf%BHd1`IEJ)Nx2PMhh#7zg2^m3#517bxn2e)H(-g)RygvL@9s2uv)V_5-9Rsw`@gf`(` zqqn$TKApC)ag4lGA#gAJSIJ9}4`b+9Pf-@}a6`yq+_k+~0By?Kqj}rHS)Nb7FMD8r zy7#2A-V5&=XnqTHcWhSPyGhD?{a3mB?_X zwQmcjX2MtGTC(m?^lJ@V-ZeL?kY^hLBp@a)@=5v=+=^$J{&|w*CP7)d;L(T6lGc6T zjx7PQg;Q5d ziV{*hurp0;M?6?zLBn@Px3K4Xw^(}sI@((kbT_zk<92?#g1fIgEZx{Mq|x$MYe3a0 z&mLe#N+8t-X^OG{{UDXCS5*b1Hylq z>jXCQ?J*1UZ{_>Y!0+MZ{@j)Mk81$NnWg6I8aRO`iTZjSZBFk>d05s^)ypd*AUhW{ zx~NLnbjmn3C%Vrc(aV0ON&(b(AyETvJGGg7D+_a$HLtrVgxE2DE z9{;w4%`$iMCU91Az6Fli^~hWAFHg9ijp2PGF7`OK{>0RHc)l6RZ!#?H%>WpM0njv0 zj7fVW&bhZTfT(l-5iO5w+%wDzwBFpg4kw1FCJqSX4-Ayp4Q0iyii7F+Xx^;BOP93f zQsh%v-suMUzmOmpoKT|Yscs0MYJkPp`cVDjuZEMHv!^?7v7k+ zc_RefNOGUbR}Z2R9ftw=-W-Q_6L`-H3T~hcwirI94C(|5WIBex@tN1!-0o2r0bRn; zlP|kyTXf|LUp*7(zur}#K{WLf_nZ(bpTkOzjn9^;L-=5uYF1*&tQ>8Efrmoy7)=Il zK+~5Gik!r>l>Wf4MzrI?xj8-RLj(E|KH1Z`a!B>fKr+@}LC9S;5F!zHs;&V&m-e-3 zKlTz}0xR|G2!yv4`$@YBPYAHsQc@pqSs>n^?<`-qDOC8;1&_iT$oTZAYG<|&rGyGX zU3^1O!V%M%fSgzD(LQwW{b|2la7^hbpOh2sI9{5dR!MXJX*QT)i7jsQGP#lOmnHl`ADlgb)51Cm4Dwn^$TM3~sy>x!$Bpq4+qu@+ zK3~_L8(#OFG|xv1t|yE2ZaisU0WNrec3!*&Xt7%Y1TL1AX7^;kMgvA{fe7eQg_W){ zi~cz$JTw~O^8GnV4V1S!ndq&OZvH-*pA-^kLLMEd(|TL8S8aa@AmeUi4|HvN+4+yb z0S`?q+fA2yx|cw-VQ10vs{QsRXuCzeJuog>;@KYyeir`AMop7^Iy||B-`88Bx|Pc; zu+_k>|MkVA#;t^{s>Pk@8d|8|M46oa)Ut<)RX?KbO}Cd079@Z#+xo=RGjPz?b7_s|6rf<7?od^pOt3PAdlvKWfi0ibW$89}U7OZdl&(4G6Y zv5I1=;y!ggfRxs*7TU4LX}3u(w^l702RL5pHR>9Q`!)sV;guLZR+5`2A7p&Ay0AUk7+6Z9peQ0C5 zS9G=>3+9&E<3&ZC`a;n$Udzq45KKtH*YJ3mCjn6=3UH2x^mwgmNQc(XcsXq_iiLkM zk^U6?9bocfu9-cdCaH3}Tb59GjHrwe+9oMD8!V0WZy>Q!2EKT0(0EnaCuimP2lXDae7 zTc|ADka>DLrL6h|4+`{b96`in0CHz$Yu?|{+B-2a9H64i&S%=0@H96=zor_f%NqN1 zuA%3CfOIFDO&3dfVUWmSGtg8WnN9BzQBMH&tg5K(`JY-^Du@y{u!_IRMzF1)RpdLF zi=6Ho9RY#0)%==MTle;wqxDMdxmJrj>5TLkXSgKmzql?CN)%)au$!SBl~P5yE|~Mt zM%X^ruBl8L2{m(peZ8u6CKDogwFbdNW#=uag{`sL`?xSbk&E(PM!1z`M$xEvqnPkgYAl>|~G z*46Qz1U=}bnefY$m~ja_560BCK>md;Aw-zP zkb@G!;hv>ln$={(??t# zK1{m<*p+?$F{joYOh^};X?2)TMBma8zr{5& zL%?BsnmbyvvZQ!ABl^Lg>q?!MEx?Eo*$gw0{?4E5(oM4ePY%L$gMpxi^f+*<^1JNo zbDWi8KgQhD(dUhZZc!WnW1WEi)Z6SbaVz9+YG)4_m?#z3eRwkHWsDkzGyF-xbYAQu zr}*5C_rGX_O5&}Jl$L@40UMlxvMJ_7 z$l$l}q?)vCo#if+`QZ_l(;Swc#xU#NnWFhtm6={CbETC5D1~U#9ku!W1{;X2W0J7z zS&Dn%G8P|<^WdL=0);`bIj5@qdf16Qh&txR; zc5p6}eW+H&zsLS7(iB_8umR^TVBw!Do^+SsVWL1A+xY+n<2G_$3ILEJ-n@YoB)=lFAz(BTq+bLdkgTISjsYO@dxWC{357yw7 z37qPxf0jX1B|LQ8(KVH7bQuI?FVvdDi_Yyg{Plx(kRjyiwi~$6e~fD@Rz7O)SN9E9Uo&6pA5WGk-c2Ldic#+E9}G?6%u+Wx zrvAhls_ApKCHS_(9;WZ+I4`m(gc8ixfE`uVyq&1gU*8zr5}s+hvA-aCMn(yu+3?Ev z6bk>jaBVggpc$&)aRr%y&5-a81Dm094Pz!o|0%s`^*!nREcE{%)vn)~SV%@Rz??{L zL06&%=42mcYv>;d9Ir&})qf=w#if>VyFKo_(8F<&bK?~x3z4GOMJyu4gb}ReInwTHil;BC z@0tC%YtoE8*X{Db%JmDEAXO{QP9?ve@Yi+GPxdcA39HuDY7Fl+Bsb9S=fF(9Q<<91SaQ>I z71TV|IU0ym$DI~D(V3Jbe6!KOi|kcoLX-8*3v|{Ao$@5D>y~A|^9l@lsyp_C zuR%*hfw=e-7*Do(U4AMEfa@0i8FV#r;~@L+wp2Zv)!}S;{8g8-%H;lWm-oUjn9I z%){0LOs3Kv@70{G6~6A4rpN1%dWXI6vUY@+f;%aS6@ub@Tj&;1cih}=z4ZiJI^bUdW#!K`?T z=<7JBe)u>TsHv?1)5u&Rh_-$k793s8fBPsiSqSx?RC=5 zU*i!LsLuPge)}*<8r9@LhYe$ReeZe*b{y&iUDe!N1LC+_lqyi=mDp>qPYwra0vCip z3D65n5DA|NjB)9%xT33>GT+BbYfjd_f_rpm6XdDrp$-(dPx8Yi7YxQva16Z+=^G2J zT>(uJN(LI*sTl0}Wow;64AE_dPU<+GJMlu_P`z9HC71p<2Vjud!N#OGj}ZbeX?qqlo#w*oK`Tao=c7|eJV<(M z4k%q#Z-B)L7dQb!&t71(qj=c?b35a1{Z`?vcYyL>q%QcLxZy$5J@4Df_Ec==!A0b2 z3~-v{_S^JNZ$e?Aw6Jp5e14Qa<4AS-&q~nmtpl@n6bdFWRwdVP*x|1g1dH>xozSlq z&WLQ(#_j^=C_jsIyjEK+I*p_k2mTgh=2Ir3M?(Tf$4#QAHx`t(-eF`2z1@nL$Z=Xj z*~h7)S7R{_!|A$@0>_KmcVEFFEZM2=tXKd?3=drAxfyLR>=rcJzC%bQ=)rP^DbLaB zH*ZjND9+V0ewb}9f}X6y$h|C`om--%>9SVb=D_)VKDCzO3eDAKf*fa`@FPH;@Z7j~ z6Ayl}?pT8p?~0OUVD{%msv9^w1{dF#!AYs52vae8E=5ZKo5FNePQ2T8)wgdYGo3iY z+@qAcLx6hsuwI1V;p$iRs#NDgOEeb<*i%>PM2=Q_6bUfbaN$a((ic#mf#g?3-xbZ4 zy5YL;&>(=f|0!f9+oP22cC`|C%xcw(ZjLwnlSsouq1D~r?jS}~%fA?_W+kBR5o@|w zRDk%jF3xeBOu-$HQV`&#E_n@UToC(R{th++j+_ z*yL;$tu`g*u@v+n;IO%-sNyGQ3j^hbh!TghpWMFcB2|n?^^I74=cUv^UkDgtA?T6k z*XP#xJ2BYhs(99WRJ_8`OJA!ayA)U$#x+5=3||Z&L_u z=&rXBD&ugF+q<3}O>Cgz+BbwNUZu#r`vDP$@xBEe@-WwJDe;Id)!}=IlhiJ zW$~cjZAIRr)OkTDaU%rgAW|&iP6;)tg1lYPHb@TO%c_umj&yXzfDoCU?v~c@BGuJK zvChBro+2wUT;zmzK!5YiabDQrz?e_Akv3NnzH0W}c)Q^;V@D9%@umMKdIHo{J3nT+C?Fr31_aA- zHyM$;A@RpFyK6H1>My@!C`q+12=!sZyZBiyrlQ>Xng6$Ht6+;uvD%V8UPv!KQgn+c5qOcGNRg$=v``kx5b?8A&58Y^k7uZw=8J~R3;6g?Vz{fX#)rMiLccqs_5*ZM zWm&P5mO2w71WZ(yr;@n9%VqrZ|avIJsp|^)IazB8Jz2KRem5QJgI-5Q3h9W(rg1vTrLNQ6xuyKVWCN zbw!;nfgj8kHJ)(8u#G+iqw?s|BMp6PBaLI*R8{1OEk11FGE#hs+M-t!u$^t*htHDz zsAyPE%Bwj&6ezi^OW9pTgrML$F+PH9$J*3>FgXV48KLNt!}@&&*UN#DYt_ARZwh2h zF2|h?)SMCz7*W7nW))EHQ>8k*O>E7Jn@w0sYG;I6LMA2d-F3RM+A=`YBxlyh^mcsO z0=&nOi%t|bv7%?ye0|tz7D-Sb8VJ-?wk7!7iUHZl+l%BhGIR?TY6ioe$IG1%= zOlDcf7r~w&+Pieov_fl+lIfvFtj$Y!9q{?wjjTdPJbE6^9;F~Qp`TY`NS+)Dqp#j_k_rNfg*uIX?Us)T`N5@D-saL2 zRUq2dKNB{wv+7r;)abS`kgtEt0tlgA{?z}hKShQPpc>noXEvRri&~lInWx_eimt7i z7Y4T9f_XrcUq5jNnoVGOp&usH07s% ziMa}0zhja5XLHuR9!jX&HiDUBe7%2maMfYcDJ#_h+yt@$M0kb<_jtSf^j(Pr06{^? zCePK_&AA8>M84Zjwz4>OVTbVEs4u^#Wp5VsYb`m~z;7K7m^mhke;pzhOmwgm*+P4( z@mnYxVK?_{Q0u|()ofGI6A#$fFqAP0Pq9*A&YgCK>w^%&a3Dl3y_N#&zG?|09akuz z$FVo&`_6(P?=P+__cHQ1Ki0k`Y!@Ncfv%-l-{j6QI}3nuBe=QXFN-vu8;7-uIMEdb z6-pS~$vtHVPQKvpk?ur7qM~<{|9LC%b#NZBv_F5u9*5$JYewgfgISN(S2?~5apNk` zmW64Z3|z_Ap~tr#Z7cI0J7fenHj|6j#CRu+~dhCM4s%j}}P8gf1%R+;^ zI~+yY7;Z7sF}+f({(L1F2Kd~N>7pl@W#%kDWDy5KNGU8e>^@&a<2LR*S!l$iuSTt8 z8L_>K+?;W^9%60-gzuQ>P&lembZ6m>aOOOf+)|AGm30tUl%mO|pfa;6TX5atT8j7& zg<*vVS&Rn<5U8HU{@KPyMAdja$E68|7b0_pkqCU!#e_Dz2m5Um+; zd?N29%KNN58DPfch1>n~9(EMZDfd?@>(-EG4;b;YfA6iY81_UnP-sKq<(cBd37%vgGT#Ui@oNzMR7e_kzxb&(hK=Nsw$x-gI* zlxoHZ5u}B`r8MtTX^yH^%{&pq5xsd)HSf}b>$DHO7l5WTd=lYZi&Vh5SYllMYrj`v z2$5d14mSNPC(nK}OahwMiJ})iLK~j;%j3DN%-Ap}tj9N2qLw;f?lV{2PkI4K z#lUcBA#tbmkYh9%snS#s(RiM|Fe5J7Oj2vy~# z4j!fIC?_K%O43s)5NfCwu3kXMk)vdBK9Bo;87;-dqk}H;I}*R=`8jp zlL2p1bl%zC(F#+s79ZzGovnRy5G;-_{cVPK?z!xvb--UpSvt4%xoO&Yo)wpwLNM_> z@B4BAA>hn@kGK*uucW^4g>KgMSpIS8k%dQDJmV(Lms2KO+C#5|3hT!RyPZ~w&RrCk zc-4W!e{5N%^=$>`r(RdQlaOGqo zb6Aj#4_?}}yiCKT+A@76O&9zl(x$hU4kQ}ivjM{iU&joArwqU@iMcA=Wi9SByjuFVX!<8m=i}^BAQ>xuPY4)YimeJQ7^{oCrnh_dmEg|HA z%Cs!IFZ6Mm&acLWGzXNMO2;pNZ}~UvBTJ-w0An_E{;cvA%CFR1RN#UOf{!V zgo42@W4+uCh%Y_Nvlr>ZfMkm0u+)kp1H$KMn06F3pPDx?Sx26kqU_c)xGV1l8-vvU^?-sBF|QV@Si14S0Q z#r%-cVfMGW=gJo|=tyc^{<6TTMj)P6gDrws$r4kHz(?yRNT5&7XJ&3JdO z#_^uRL=;nP3dxoeRzlJE52X2I?iLg2CCJY-b?zumE+xCtr}24qR;sK>b%%PzyOLi1 za`$p4l&5sC;Wnea_x;yYxK+~_w_9RffLJiKK+N+^qJt3cpz^EOIv7uT3C*d>jZaA& z0pV8dG>5O#9msqz;#6xxFw}}L6TIAEi_3lojLlL+LiPu0B_d?zw};7~$qnMm&ddbi zX(awcSJS9yV_k9);v7hC(PM+-Pj)U1M|Qbod`|otIX^Z9o;|d{J0&uCpYh za_Z6$mL(zS6d0+0YLaKx;j~pgL^i(R+ZYcrBKbh%bp0cVbi-qs3jZVyFJE3EacRcn zvF6j6%Xi$rJff_XZG*C29>1mVQHG8N*5u^))aKO(_eHm;)A6k>lOC-F6%uH2_(NUM z5C>5BW7E}bin`+t?NGiIenm*TK;}p`AD9ED991($r*JIj7Dg)()MCz=pB$R}>ZQ47 ze21{8x9U@8kXSdU+ZwNY({&4sSIwr0FcJaPB@0&Nli~Zi# zq-ZLvL3XAykM7!X8_y2WWBRlUA7X;sdjsiIB7?Tn!95OKv(u2ge<{upB9VBd3u>;f zvLz^5+94iM&2w|`zSvWF!Hzf#)>H8`YYNjfNmAbwEf1y&ty%80en)>SaRXwXcbWye z+KwQjo=(ihb<^y;9}qp^y7c)X-8-3@t;{x@j_m%0so_+0+hfhd9cule9c65xer?3u z`DO~hnI)6dnw`xZ9>me*>&7BvG{%VP;O=*dz-FON#ef+y$Ez}gy=ObqKJu$!q}Cz1 zC9BJ-$kF(Xp;-OUa0Qhql+pF`v}b%d?hPk0d|;kVv|g+wfCj~*N_1a9vh%#6as8o4;^yx5soklhw4YSEBYHeom!Fz0lUjCbjpTvz2Iw>VUS1~$Cd zwyKF9DJ4Q5@FvpSD(x|RnpZkLMo4K{IYtk6ze}<@#OB>%Ktd!goLJH|A9z0y!eYZe zBMcTlo}KR16v$d(BTcR3X%W+!^V{m;2jW!{dfpiIJdI4ce9D)E6>=|+x1z*XOQTHg zvsNn~$P{y0px)ex2Og|IwM$^aB$_V1eqSgBJ_lub@lpiK53`M7?=IxAjAzcK{FDML zzqvB{=T?^G<5O=EVpYSmC$u5xIcAxeN|WZt#uM-6q1`vPT)ecVSYR=dZFbif??sdX7G}2 zOX?ubt)JXYQcp4^b@ZZ$MZJO}2fu(ImKkjFMnkTe%*%XHs*P?2Vs&64FA#gOVZLou zuDk?sdg1qWL04k7Dc#AWz+S657V+dewI_#hW?wCZXTq(|8SM%*LJDIyphjm-j&Vi( zGsh~mU+4-B2*R{H_z%m{cio2RbI14J-$P1Y)Gg)#rBKY%sPne#Fn#bL2jpc?5j1&@ zf|32_Q?j3~RD}1DQVn?T$zN8t1gpyu<#BW{WU5P5-WrrW$|hbkj5C~MEp7P_X6D|Y z;f#@h^|rXK$}l*+{~#1={8o@Zr}@*OA4Znn3}t2x=5*DH4An*<&nHBMBeHRUGL7mNURxcw%O>m)OC?LP&Sx1 zRSL(m=dhXy-PP?SO<0AQJS`}VHP@c6i2-~rN3BRnry$m)@-R1V&RGfbpItw{ef^Aj zX9o+QJa<^Ru^Q&a3b7tG(mfD2w~!w0+na3*2-mllAmv`@SVC;?8rWq5TIB3rOYly1eJO-s zW)s=GhU`*Q(^qU+)?(F&KJ-4=jf$*5G3`op&e1%aC<5Dnck5a(XSMD`_1iXwJ2=>x zKeS!h!m-8&FFM_7Rab74018ZiM6bYN?uwb(Bf(bI($Sk+MXQx8XRWTk%z*_4F0G^> zXXg0E3quTl?q{;5uscPDZ4}`t6S}HyiK!0|7&mJ&p;ND@wK#}k>_V}vsOy@Uj-8UrOO@?DW_sBrIp|u#S%41RjOoK8d zmDWoTK;@`%w@f0J{&X(05(9GkgN?Omrj%dan8OIGsO6X$mwl$iHSEGc4H+VxK*%KC zx88057Z3E)+3=j?=rui|JZX213d^K4Z|QJX-^=k_{bZxeRD^bT zm$e3P)e3D~*ghz?rM5iNEW9Ua(Lz88_Nlq2I<8C~7mLMa<3S2r8jAe=k}C>>&wL&fD>7&OI%Fc_RGqLo6xQFSzr{x5 zcMx8rrze;?NNWsg8Y9ZJP;{;_78;;5@N|+jPFzpW*Yz0_T)yqC+If*f_uaykx!z;^ zw4d+R1D06xBKKLF9r=Yn1h=+cM%f^)vMKHA9JlwbehW70I}B+1%YI;&J5P)5MMPrM z7;SNmDYNqx*~$uIpj>$7o_9Mbu;hc%f4&_k3V$IrB4m6%}|cd9%06=V_(uoWGi02@vBWh;T$a5*Sqk1@4&1l@|n=~wpR z+n@`Ho&<#1YNH>ixO)93w~+PT>^E;3&5nTvY60DS)|K;y+{CZIcJ0R98R=Y0m|34P z?3&z|)a;DDQtb~YCFZ?Fso-G){|FhT%j1^`C~wCfsTSU)mcDp(BsIFLn5)j%qo7xf z&d9?O6!i<#D4XVD%_I@rF`P0gUNu7}-}0RobXLv3SY_}?cu_rf%b-SxUE1j@^A5Md)V%{1jJGs-q+XhvIce{#P%ZR9ZCVAs z6tCQ~u*Nk#*%}M(c0O_6abm)O7r=*B;>__2S>wH_=!o3X@}$1t7@gV1p+YBS%>4OL zwxEX!nX$j;{$ww^g_%Gx-TL{^6LL(~&ypn9{8?)cN3ZC(tP?74K6x3tM0H-zExD$O z1Gjl6#L&3)0+ciTahLMaZI@kF~bK!mCYe@h#H=L-1rdK4d2{$fuPWg z3v%BX%s_E$^Hxz|`rU9}234JVpGg@@EHj9qMlo<=thvVr*NGU}!=yWC|lMX!(D%7_I~aTQ&q z`K&~5gjh&PyWn&5j_Mk^k0s`@do6gACRuw|7e+-(Y|giL$d4 zNIU&kq+bL|7~o7!|Wl88=?|Z3c0n~27PRhY^?FKTFHtQm?^?s>e4aLt+1dN9G$iIX*KIPa019P5%G zKNE{mW?1;bY{UL-%pw7Wo5Y_~XtP4~M@*9gWSA+N@E)AHf+FnyWAClQs?657VHFVt z5tWoS5CthIK}u0n5Kurm1V*JdNVlMXihxBoNJ&e_CIyu4W>eC&5jLCVyB~GVIWtE+ ze}3=#Uh~gfqu`Ebt#z+Eev#>J_5NAp_(b{_(KGC4mGh4;ys33=LA^7>&7h^4np^ zVXLP>z|rIajL{1BVm{HgoPSO$clI`SRlXs>WSpWTyxddU?;I~bAM*ZTzsOgaYIYoW ziZKY9OIwj#k-e|3(enHp3$ZasA-2*mOP31-SU5ogx2ROzhl`j|$m^}zy^AF`6ML?z zcvC1VNctY+I!pN8;B#Q1-E$J*?U&`J@~?C3j+r|v3UZA+`Zr3`P8rpa7wbjcEzGU( z4cX@t@1S2Cx5XVb1`}->Wf(bh6Ein7>9kE8e~On~02bJmMAj4xO6R9aQk-VDVDF|Z;#wM{aT$g{$BA{O_s*_AQ zw+9UiBKw2n1$8wQ9aN>yj%7~frmUvO&3wnaa&Pb1ydTFyLMg5|CcjdPI?XoQ`sPsS zGb0wZ>|4)XKVZ1`*-B9}AjF<3e&R|_TG-N-;KR*gFaKgl1q{cFRmD*qQavuym;COX za&e5XY!tExS-m{n!P*$~X`9B*c!_XA{M@l~=M{CTeX17ET7BuhcdW{YDNtGa#ph~j z8Q#7-eL6i(EAqn=Pt1p9yqKsrSED?|+U`N{RA7FU7QA}oa%!p6QSrU2?k8>q5}&5) zX|(=UN}ev>wVNU0l}IdWsL2OUxknQR2AAgM--J!@?@mt#dzZ|<1W&p6a{uayF#CO9 zMPxY8-d?BP_#B_PtI*jYWf8h4#FQK7E*D$F##oe4j2d@PoOu~R-W!}A_2|{s>l))f zO271+`C{_NK!o0`{WsL_raZIrL|f{q-C^oYMiDbgxy&fOXa(M;D_?iLJ^oVXy?-}r zzCsVsJly~c{}TbSqCYvG%tHIi5;zeAh0ngd0~bDgDQf8i?UllpBnQ_eX&F@|cK6N(R-J#SwLV1e6c$FV7&rHsZ4bZ)i^!M-i&qw?90#Mxg=c)Z= zzx=b;{(4sbIiddlrkxqd(d4?_dyz)7hW`z;&zRa6b4Jt~0JaTvje);g?R5gv5X&Y40$&chpn zJ1&7$U|wLJ4btN+7o6E7w($h$ z5^1mQ6s7P2Zv-1UxOv(MT)P(Op^fqq;aga%B?JqCBbD}r#gF8pB`(`bk%2CaBio*b z7-+$-Z~DSUVyrJ4C#Q20KYB98d*u90Wct*Kd(JB_ifhMK)1j^;0}_(=CV=p&?iiK0 zetC6m1joR8|E4OauvCJ%X|-m}Hg@1HZ=dUJqed767I)jpAqI{cQSjCe*jOS;GL+1t?zTm|Af?nu6r^qI@veFNLf9*tfoW8DVb8aUKXq~gct-KD^ZvF7CZ;g+<<-d06!3ZO|W4wwCRSYv1g-Jk&*BC z83p#15uX4_`&t6(?3B?ZKZc6}#Xx0ni)sf;8!ff)vKp{;AwLa{9~b-r96CqOk|O4rI)z`@rXAcIwEy!G6YCc^@-nLL4f!`W}$ zrR9GI^jBIl>d)6b0m>U+u3hT6$uQ>b8{R@kH`JhYd@;~z@p4_IUR@hkfNHM@MBbb4}i$@9$e-Z@(UeR6;FES=ZU+@;`Zk>CpD3@g42>nvIS=s>q z{ZUz5-{zw~dst;3S&*HG0WfO!TeGtV(w67?1pC^k-@ue}?>+$tgZbwNsLgVF?(3Lz zmnjj~XVdZ}QQM7D&|I6jCcb`KgsxEdU0tO*GWuLSynKRZr3WE@B|w0}mz63js15mS zZO)-wz4d4P=dzIHxa{t^R~az`lg2-z)-=DQYEea5cj$I-U>fS4RLzxCOPLuSvp!&_ zZ7d6v$h~kA6thEb2%?VJ)p6u~v>+`i<6o>U(;!z(`^K673FX`ADzf&}xxr<0`nf#H z$EFaN*M;fC*bk!4JZkLN>TXoh#wS1&CuLvlqIRUUWh1;_$cvTAbJ$CLWAF3*G#%0a z)1VV|u%h8JxMfnF12>l^a0pJBWVc9VvftdJuIc5VpXDEJ$!Mox80TLBernVz8o({6 z91GOZ?iJPJb<2Z}^*NK0wQ-Bcy~KGCkGrK`9rMY4D%}+r@HG47NgmmmG@~i_bzd!( z4`F7cZTa`ejfYY(TQbJEz|G`(nA>`utMt%5%tO)yAU*voh`T*g1RlN3KQ(R#YFFj%_W9~7Lnz*#hV6j2tCe)QCg#(T6nE_@bD!Q2+{ z*RzMzfhsq;{E^l!*>&ozj>N5}DHf6AC4NS5is2S2oz=sG}pP4ZRzG$ z3&zo4$|B_yYhOb(9&B#Af(+pvvwBv4>zy8hA)m!HgYauH{93el-$!%47w2gv5bs@G zm~;EJ-E(cljYTk@$p#`)jk0UD1Tqn>K6a9Gq3|sZ#CdiyKArIXs3o5QY%n~^Vpd{1 zavq|tMM^GcwY}8}c)xV8_)eUK+g}@V|2om!E#Gc)>nu0HJrZjd4EL5H845R0YLr&g zldI_1Tc)2e-{3I?=4K`#LwOv?1ZL-7D3NzNhG~BNUcDC{pbYicgdE;u@20}~&||Va zqdMUr5o*y1N{D*4ULDmRWcmQ95I`hFV?6)#r0;bvVuVo(fw>U)dKI8$sjSxd=?V{4 z>M)-;<3|2?h;c=XH>Y}!R;*iI9cR%wdLX4*6cy98h;-L(U8a7GOXG6O)7c!M9)_r! zVr3YjzI{h7Mc$G-SYAu>0#UOlNu17h z%X`oFop1V+Q+1jadaFHgW-Qq1aW6&(1A6iohJ`B^fdec#otCCO8*tKDfM%d zZDno*m0)npKx3N{1kfN0we4+CvuYSrj$bOP+Cy^g@O>B=hp2 zOgar33~~5e5`<4uvs6zIU?1hhvqW<-{aoBk=pGb8E2XFNotHgu@Q9`i$4LnMjTw-` zRSh%`d_h>ub{ur3i^?{ekTE-+(P52*0m|Cu2%r9tg)6lp+$fM?0w7_@9OOZ2sC<)f zhAv`sX8F1ofDaX8FIIZNbSU-Ah~qB~KhW>?*V__BjbNUq>?J8%lF;HYl}X5gF&5-(rQQ)iB7LT-*}zKMSXpln1qfa@h>Z0sZrv zUjs`If(Dc2!3-d}Ib?d*i!gi1Lkzc)vzYJ@@0gFSF!Imy*@qE;Y>Wo`-lSWo#bhWo zUvwc9?YcO^sAnRw&D1*0%TkDcM>z_2Z}5GeC8Hrz`lAp2BP03CMMWO|$SrU7bsnvq zKJ^Q{6nlb_s{HXSpdD*jzQ~(x);e9|%RpBYB?6Zg+o(@!(R|@ByzbNoZMc8+UkIvS z=c(?2%0~0RlV)}A%#Y)cm2lRi;^M>I@`}ff4cu$(_=6`LsviGcJ!%iaDLXYS8%Egf z40aJ0J8v%5xMhwhuzzfSp7N?p1GDFK=EVM93i91Tg*m5M1`I$b%RBk)K8!(l4iGGr ztBZ>uGuyMHV7>sLC6d7n41S~p_!c=1WImRy;k-Z^8AuOs7E_L6xoadFw2%zg{i69n zt3!L84=kTn8SkPSZ7$PjT|xlJKRIy}L3YSx-Q@x#*V%F8HsN>~6rV%t7Atv3=#IxQo9SxY}g} zrJ;%e1fXr2yccN;*P)bDVo9vnpa?R|$x*;`{K1%icW^Ief7z@3BF)c}U$v)|^?{<# zh~0f3dR`r`%*OlS)}2nu9a9c&f&%q5awk`BBv(W56Q9olP=ibjB=RZKJats&Ta%Yx zr=44Rn}*^6ddV8@Mqe0kl#%;V4i!o}n%d!*_%Ng53TDLgG7;v2e}6*oMjn=D4+jiJ zrLj4f9bE#{Rnfs8+Cu-jhyL8<Top_~{q%Fdj>y394&4840L0jzM{zsJBdhQ_vX@n$4_Xv=DHU z-sXQz3tS(j!qs;&b$T$gJrX3Nzax@cKC@C`x^bt;0kfCmAY2sa1qL`PZQg;R|` z+pEamofbx}2o@9oUk1?7ZO{ewqVK>?+(2MXK(xjcb@>(s#6Lb#Ikouw3bnr5tNmqL z(<-IU+ot4+>#g8l>3`9pJ&&Q&*X}Tu4Irvlb#)`8x}MO7WiR&y{@9(uZp7uSD0`WG z{^?@(e)Sf%XUc}SPWe7S{GWVuwRy~qi1B)8b(h}I96S>ecsTZ&)wrF31(&XSTO)MU zeuyUO$SlJC46_?~rlowND-Uq;&-Y3qO^JMjph!*ybZw}=>)iyIrw2;2@AnxdgpcfW z0hP#xUVP;hk(NBz%eU?%q+Bxs@Ws|TKs5G&OH;r9BPR{ ziujG8KZ~ZZL(HUA%?ifY>Qq#9J!rCnfdX9V#pFUW4@sdpLShYQ(;5SXECu_fE5!BO z&X7@lRp37o77A?b!gJ{zBOIx#kj6(Jm58Ymt;R^}KaI2g+6Blf8afnQ1HMIZEPcR5 z4Pc6~3Mo6lF?t;#v(wY1TUD9dkA;(94@wxLcBmI|0Sb_!*oJ|Uw7sTgr#pvfVCgu= z7n(}HGF|DZbs*1YGL}oYM{5r18J)&f=ce{cR_Vv%b!=4LOo#>a*Os#lHVz zW8V=wnE~Sur4X@1>p>LaX6Mbl zla~9g1U+5ah5H)4oUTxC%Txkzk?}!`&+$vaZ(DJx4g&INZ3f!n3 zu;Y2>y{WFxrng*qWCW%F7C60`%n#0A+ytxDV>@)wZ;5K5#ztq?gf=)b@Y_46bxJQseqRtZw+_%E(qpxQ0y zUI4eX@z9Pwx*bY_&amw1KO*;*dUM>KVW|1e1NqtU5miAn(Fz6jN_#>X9}kHyr`DmB zD8*$ZL?nc}WQaYz_~>IZpS^wR<;=|DAU(9|T3qDYQfpt}^NW%os%(`6PM)hI{?DNN zvp0snlivd+xP4b_zwt4D^A+3#7ykVLe*S;G%mA1meL9cmvi$Co5uh*xfBO`F z|6}$gSWLRZ10KIxnIB(kAEub-x99|UJp2`lQq zf84+QI~uzs#@{^v_#{!JaFlx=O>+K^PY)YQ^f#-5JRXUEHr9{x^3TTl|7l~TE-`j5 zG?Q2U@dkHbW9Ok4_dvD|7n*mzWMSAGhs*Qw>D1y#*`6Dd>9UCb?TIe?2wnZurNRYg z?4mB*WV!*nc|DzN22bCFd}_4+h%IL0R{o0T#fp71DYTuM)*coC7bSliZtjjyLV&ZM zQylWid#tR=W>T_fTT{S(u-Hd(ZNp2+8oLhr3=(4_q zNM|Y-NrARmSN!w`t;L3kNH1TU*a1a3p{s#cnOrUiH_o&r$Oo=f3C3P?rRZWe_E*vD zLWo|!3CHA85c3kCXcl7_kV(txlpZb&U3jh~%h=3=>3gwNdb{8#bT!-!YzOeS@<$_x zDjgS`4|j#XUwErq*U&{mK&{1G;(G53-SCsPZ3+QR+YW4JUu=aqql3udccG4rYL$mH zT*ZsIH~r1m`~^M8g!iD{*-u2EPh#_K2ib&hRfm8y7Z1aLCWdi)ZSsxo@-?O!+<1_w z#Om!Di+%O|;w5;$->+RDv=vj^#0W7iw(Z)(VdC3DB3tz&(K@Au6>g4mH1R=BU-OmK zhUP}t&GwUte_fEsFdfn(@eI^vJf=OjKl|08-i-tvbG+WQyK`@|IG-;W#N|$&Sn?R= zLLVitwrmuWp%EMDXm<5<(OvPC=pB_8p{ofAb;Sr(q=^rlH(Rp5X0_1$W}jErpxwn> zD~s&U&^pL2#=Tt&${RjoZThJ}+oDePj6 zKRe^Q1t1YG&BsJvi#+1T10z0<$9PQA$)^H0>^8#j6}L+-UgQ*Cd8+eKqE8f0M(VmY z^OC#mMH`X&uBX_l ze5y>F2CJf4ADaS19nwgbw|Y&b3DA;ZT`#ua&*iONEBXc$lx% ziTrXt@@>nPecv1>Pakx2v8%aYZ2N>%SUoefrzM0VE>mCJFBPLr zzx~iIA-1X)>pOqi@IW5+^3sz?(;|B)EJ^eF89e*fBvf7JP+mF88a#8HVRq|;nRT^j zn*rf^o{dN5pKd4Isdi0Hc`JK!D<`QUooqlfboAZt_wExah!SVDsqFM`(^mQnbw*JJ z61x^{ZF9Qi1xmd*_<*!TL-H{A{X|xwtC#)z^LZ#46}M5 z%9p8m{b$YJ<*w8C#R~isu>{jEX7zo=-Y!L zBXvHZ`E`O$vec#R34u$dWYELfv#rs3)PY+Yc#<|*UNf2eT4}jozVEjmSQSAMCN~14 zOy#vM#mWkM>P?ok@I5FdYb!4Mp;rk?<1GWD`a3SCH#a`(T4)zl+vz{3iCjszU`DT{ z?PB@)YQ-PU>rYrC*5yr}37TgTR;*~49`*aqKKf<&cjLN-L{vwFT{d7|H=z3|oa~8D zr-o=sN$o?6x(z0WbDH)IgKVk8_h)x}u(1tYWDg=7)l~0p3suVJ^_(ld0I{-GjoPDN zB8-2wU`aXr+QH%Y&2&DkW^xiqF4}-8sc6e9petkC}c$3FI>Z-bJ z0vX&U)mD2)O15!Hm8afV;amDkf4i|IPQokE-hRmN+pBIj;WShf$pl~Y{>QJ;9)V-> z^!3c|SNqH@B^&|c^KZRW(^;Ywj1^)NE&P^D;!}P8K)nBgkw;#AkL4m~| z^F{cV(f#`m+TlAW6Md@sAHT+T0?y_UmM%nD=QoEq$``)F!AWq_I*2I4LL@L-1vtV7 z7P)Wa>R&!6CGsGX51%h1g0?Upx(q$zn>bqqA4^xZ(u!TqL zBchz#pfy^q?KsDu=MH_DPVlz8vt2uF{`pV?WARxl#nsMq9dW!4L+A0LKOF^sSiSsd z*YW+2?Jvp_Z^z!;`Swq4#!WrWJ1*(jy*$;1z=*QI`zSSdIzs=4rQ;9dioboNqtroQ zaY+hx0m8QPCLmBNH!_nxMk(NoMZ7Hv*3|%lVq6f>E%@6nWVSbi-}SiNNxS6GH*Xn! z^M-Eghnek?{T!s7xI%MA$i4pX_~{q>VK7tHw5K7Yw0YEr5vBRN_uu7qg>XOS=vYdm zKfiHRmpo}^!f#&o7V2NGinB@kQ2M)H9o@4R#jky-qZfTYb=AoJgZA$}MwHqTwL@{s zs81Ht&mZ>pXMbJk(GbV&#&tEdEM=#y_QQ_Pe|S&)?1SJ=H>a$Th+-xel~EIH8{fP$ z{<;bN6;Dn|0WYELe06ohatQ#t$2hzirYVHkbbgJy@3Z z(K(p4^6#9U2E!c&7%p^1OM1CK=tO{q0Nlt9MR_sUWKgPTW)7XN|HVW4{*2o{JZiex zspGn(j%oOa_Zi}d9-4#jlL_LT-KXWkCfTN7n3@HcCmxiCC`2|yTDib}9B@C5fO|3p z06|mHL9QRR9zS2b9Aq_S_?6W z`|~a4$280es+6^?JMz_n|1=}{*@oEP?l19rO-7XAf+*(b^x`=CR*=50g=p8Z(;HcV zOc)RLm%hc>Vu#9YV6I$X2++PLMDAKGed$k|l)puQ?|)2G+3lX^kXk^Dzc}@L2jG3C zm86382Zaz9xL#;;zsd;&+GR0=Rr4jYUa%T71E^14!}+>%YD?Jv@xpHJmI56tqG~iM zL@`Q>FpzkQtlhk5)N$5G`|)F;#%TrpO9#kLcf$lN%#xe!oP`iS*eAB-pr zz?tU*;+F?#1|#;A40lstzJpU?g830enxrv`>j=+l1x6&@0K+sIt?|nPVe>xdAL}FY z=FqWu0FcrNJ$%Oj_8+-0>@L`HhLKT!Hgvpuftf$?;ty>Tdtk)gWOZ$d5S@eOH@8R3 z2Z*&@11o_VWcZe64?%{iQjLH2+x^*Dk2(Q6;Q8vb z?Xc0EO_(yx>|yylo82adz#xU+0XV46tYqyzeid}n(Q~Cc+w+;*Yv9r-TX%M^H#@<; zgBjkOg`WuJw{dVNdjSnL9DzYR2munZ9(dk0#|N&aeCC_S!??t-eIQKETdBX^MNxZ} zrd9u>myVeqH@&9y_&%4LPe^eepQcEKG`Rz$0@#VLrX$ zrbh_ksOSt^VFdsg_t0sq)0YzUXFF3hLc2yz_XD#W0s8cv@IE(kxq>|{|Ad)<3KtQR zlX<7HKO?BI1JbhLNycz3SHYK~8h|r4LBLSB0uVYiLFBNhGmo5<%3ptK+42JP75u|N zp0g8>4k=@Hf0``*_vw^q-P2L4^BU9iuIrj#9^0~=B1;lJz`@D~oW?qW9paKE0^vU? zA8Og+n``j<6j$FdS9z&Ux8$sihiU|JYH4z%)G)dBb0lCii6bE?7>i&%Qd~fpvpMSc z+)$_eO}#ii-OKesW0)a~y;7Y4GHCYUG9RwJb(>8>Y5%0(7Qh8E0UmKNE1wLrxtAfq zR|`Ey(MrlB){lPo@*&8QFJ={JKM}Uk0X(%~mkbif@*qMmlUo^;Qrx0abiz_KCPyit z2|DN+i)L_u`R(=4bqM>i2nJ_+6mjc{O}PfIQXND=aUJm6)7r`d#V|w)W_$_K|2_!J zDEOru`XuG8_neew>$vfvg}YWoBHtZ|f4b!~Vaq)nn|3NNQZ9B6fhl$Ufuy{U%K}VF z9>;y}=VL2K<_c%hESILYQPVd%Gxe|GHFx?!lhX#UK=~7ZCJYbNk$+8$ff0_5BAEy! zsm?LMKjIu0CtUgXMgS#FhrfwljzO36nZ$UyD5>fD@XrE3+sY3oPg87Igjl5>Vi3;n zVwDZ~;;?%gI;e5 z<+>4?gb%Jgz#2B>E+#5By^5e8Z=#LRw4O^~xY{bI0%$BF!P$7%G)7|pi5EG(KP0aC_*01rk7F}D`tQ3o|YP~TZcgoil;)MTG0@uMYz=E%y z_xp7^^6$hchh0qg%ey_fFdsWlG6^C0q1&s|h@piIT+a{C^O5}!`fNa*wJ-tSZ|TPY zC=a#c{+_nyCKyq)D++kpgm&(vJ(o9`AuoFtbN6bpyh^IeNBY?jW5&{XSCKFQ?Zq=7p?L zo&id)0?F70o(wVJ43zw2aIcpnmG^Ni{b|wq-xs&r$Gz{vOHbv-9!P)6h`KYs7{6W! za_e*H;&|@oB(@d0Bu#LE)H@G>UT$N;Fj*cv{VVQ*ghI%m+{*H*s7ljCLU(|@*xaXS zm~?MBTu+1|cDEAG$&X>a;r4poHQxMY6%lH>!v-J(A34V7=f=H4m9F#Goy+>zIKk>! z-iHY8rs$sD5)s?mZ<;qSThH6H{AOTK+E<+O6NzKG;eI(nLtT5ghx)g$d<{e>d6C5@ z4EA4M4Vw@$)pZW)WDM2+CRLMo2KhIOJAdu0p^}qbBsXb6Vl;K-S11*G(~9P&PkTtR zdoE2{TtM#r2grQ?`9XBbpB$sOP# zwu9_^la<+?w$it2bkxNx7MrvRt@yjkbR>@j(c@m>%jq?QC^8YO#Q3&T2v_k!xDMw! z9^ffY85sG5nVNpRxzAi<_SuXJ+j_rpe%VeYx<&(1Qcx~2zvRz$QHLud9i(_`@)`AH&x28rJ#;}+u1 zPf7Zq0I z77}C*p#>)|f{EuW9_pdQIXKT#=xYGMX8}af58&3Xpc^{JS z&2uH-kXrz3NSSR>na~OjnHL)Oif*3~jsVn*B$?KM$AW~mDw-A^XFrAT8NS}yT5xSz zcK6=*3@#hWB%&yX+|So5&DSHe3lqW|Y$*#%LpyJqVFNxcvQidLU5NNmMJ+c|Sk+2N zK16bO-1YX2iqdPGrJD~OiiOT@|8iv$10-nIWO7!}uW_xTsZtKbNk=O;JjdR*!XQ~hf|~-@uFLBprhf3e@waEhOI*T07G{ig#QQoHG-Q9@o1cediQ;!HgGZC0 z<%{7bz}jg-q_*Tnczzfh{;QDxcVhXBRM`(f%H~`|B0AIw*(2DYZ#yxXZRzYs3p945u#%nh!~IRn~FM5M(?)B>XA0 zPo8UK0jx7kptO*SXZ6=HgWAUOcr)P97aS@K*MXa52#Q#tq0nWa)U_hqfxi-LkK{$e%Y~LLBEJRek4Ecc$2_?-^D-jH*o6ie7Eoz+C?iV^9ESu*^(=d^YjAs#eN-0 z4_{aL-a6_q@XNCr+@3Onj)WE}_t$LziC(xD4ZXWQt%T%^^u383N)^TR2>f~z6{jfs)=`#Mg94(_9 z1H3+|-;G&++E0?GgagX&L|Mah7kYWc`xJkDzf0_LtNqtgU=w##CHT!#U_QM6a4{iG z!*Yfidr9zg(C>P<|2IC|!1#qlfj>SS4u!T$DwG5W@Gfp6P2c$6>-FFNC-L|IkT}T@ z$1kAuhMNN9*)Suv&h>&UQ!!HFR{Js-Lk}X6>EB!Dxap3%04fhJacB1*Ch_5X4gn6vN#b-~wN# zt%K&gj$N^ASi`1jv%lW@^&Jm~&gfEk zbD#t~+tde55ork;S)^RYLJk*u(EcW&_;$jhZbDXZepvP3?@lY6fLqY{ZXf#1h4<~T z-XjLD<^wf)|GfqNvKCJu21f7u&Asu>efo^zqoLHB7pQ*S`1uh+S`(d_mnUwM5Pb1L3 zp2)3uc+X(-bHBbczWu7i83`m=`2-Qkw4Z>oXvY|=)v}NaK%n1TvhVI=(*8~0i=wsQDll6IdeePq0h?lQlU0Zn z9rSS{3)YaCg!_`QC(=XShSw;v7wk1SsR2`kfze5ENae$}mLhjv$Z<}uffXxC)M5FP z5GsFA=)rS)-L!)74^VV=cKA#uDkjL~0{yEOarO!-$YLFUX4(pT-u!3aHv0kS%VNBh zP=2F8VL^Yqz!i}z=t1TrTkE(iDBC+sn@Xv+p}s+B4S2MD6~$Q8Fd)V?S!{9PZeW=v_ID!{b1xgTa`c)>8 zub)mLw19%o$kQ?ff#;`RTyPB`#g-0#~kF-2zM6qQAreH|NnNQkqSUY)?s(Hf_BqwaUSkN_v zR#Qg>H86%Zg0Be1H07L14|my8jK66y)3KpqoruT6P|_G$Z!a9lCTZg=({8m0rCXLl zLXLDgsX_+OU7OZhpc9glrd2eq6)!5*7kg1@*8Z4QqmK8oS~jqquIl(YyTF_GJ~=>s zZe29KwP~o^C+FrSC>PF!7^i*4J;Y44G>w_x--&45Fj~b9&u3j(;LzH!_Bk^yOrDnB zJo+%bvOp|P*lKbpO}8*@$^qd_j}3TWvraC&;NY4r3MjFpWGgJ0E=qV_(uI&We6&s_ zEx7o*G$A9l4ec#x5OxD-q2F4ms{=~eeuN3y?fl@x-*40$&gSLvP}(!l%%M|}2XoR# z(DvG?ReNBRqWvJ;`sVJZwZJzG&)cn1-U7w!>^K_QOC~Vsvh_puCG5$D{!tj|RW@E2 zJ&3J==T5y`Zi%^Ff zuU2j~3Mtl;7|{f#yT2UV92Yb@|dE44)lBzqMbpN2; zn6bTXO)fyJZQXGvzAW$7?bQ$9Y)TQ*Kv+}5V5@0TnM}(?M8>FT&fvhs0KIMjaEr(e zR?+PP9^FDbdxmn*EfXQgkmq0@T4j+j2=k!~5~OOuo}mwEjTa}YsHPh~PLuJF&RluJ zD&I&PLy{`!q*acG{!v7*6$mYKL+L*ik-WR4*^kPKlkJ5MNy(NpFpMlaSmRdTkK&R zh}3JUn|wH&lNe+vQ^%foO9=e6!_bbcU*+Q>%UwiUO5bOJmWcL4pK@#1)75;{*L+TuJR^z)tSFp*ep2igN^ zY3+wY*grv51Rd&-Bt`xpdXNJMo)~@%^>Po;$F)vo(aLB$<2r6GL}t8-QHM>gj!=-y z12rY;Y5$qpRx*RFIwI;*(jatn0?x9$id*vf{F`!LYNd(^s~cfqX~9iI%{)pzT6nyC0+Ogm3H4jAg-dSPxbzM|G->903ut)=kj z2*-5Qm%QX#4?!}@r*VX~wxhB>Q15Xb;M5w!>!#1rQ=t<&DwVp3(CL*Q;CmLm{ z5%KF7mECxqo~L%SJQNdJcxXLl#?#@!lLZcRJbn;*$i^fb*)Jn=8U~GmvU{%AJ$aWF zzJ9z0&>}74M6~O#+#McF7akLpzf+2ANz3gEalPdlj!wDPW}>>6&KGLhakL6WHBA5} z;L3wKhxv5-mLZO3O+zW9Tboxz+muRMzILeS6llK;NyB?Jh8hSV$|Gq!>n-jsvq!b5 ztr-+h7C6sVAu1Pv8Ggd$_2WuHEYD`l)0#MN!kf@Wl|^Sbw`@-rjR9I=j`iNQr*-N} zP92mXuAqLyciMG8g(D5~kpI@?RsMLk`b8EUuJint*YC2fdk=iyjTLmb zy$8H6SL%5swLdh4UUNm*`PC%af_yHjU9vJhNJr~y};e~*FwlNw+h>N zFD+ahq?2Ww&Y=j%nD5ZIg%+)h(bef-o+F4r8sY7$bO9N=vuVpURH=K@+z&7WqPX!J zF~g)g3p?9Q9Z3%S)2d4z(*E5WrnTMpPYu@dtM*%iu*I71)EVWgkVaCkc(xWKaP!UH zPMAsXqoMkXk&f#JapK+0557QR5qPJ|W!s1d)hpKQZeWpU#*^H*tg$fQCkh;e~7dnuDbkg`H1Hs+P@d*y|VlToR9H zU*iu=yGAVNJ@-sw+P1Wrugm&;&3y02XXJ=@iMjafem|{2%jIw>w`8#^sP7ohskdu{sxQ3Bgzlx^q zjKQ-ckHaX5+_SaN_Kl~ng3!p*ll`v4#Vs`+wA}oq?#H%9w0wHlTJEOY!p7fgcWfkc zKBfZ9b_1&|bupc@eC_Wp9~dBN5Tu<6+#)_xfjwL3!r#x<{j}52sziErtMEN#u}5V~ z(xQsE=44-9`k+Z@sYB`e;ZD5SZ5qHuv~UeI>F;Q|jyfc+cO@SyUNfB(P8PdW(_65E{I$xn4D@ zpY4xndv6NIN}|`Nwo#({P%Seto@Yd%`=8}vFybfgiW9vlF5Kcgqr^v_zQ8ednqrl; z5G|cnS>t8iJ8Xm{3iN2xb+H3@+dB(qy$zjNl!#G9m;REr%QX+zTnca9uaNq zB}VYD$77@ZzuFc?vd}__lWGr&jm9`t#<=7#pnVmiz_sX9jPRUNwlTPyCs!C~VQZ&NG3%81f zw9Cj{MW1P>`$Ub4DS!-ZK(RwU&9P~9--Z*Z&@gv6@ym9*F&QE2iNFTDpvlKJCvg4E z1jr26;EDMhtTrcf>~)mWDH?92ZjsvFl)Rjl)2Tkc*<$~$xwR{O&!qvP49khe;S*|p zmHJIxmN(oYb~+rhk7Nc7$S=Nv9bLB7U7p463bW^26iW-1n{Dg+0Xr)CTP zL_iq2c+~UjO-FIU+9sJ*=Qk8(-_%Q;AY((@cy`e^cY5G0UYM{gDOsmAN$8C1@!)1o ztQN&&&t;4EZ7nK0Xs;W;sxTT@YQrj5TmIpKG;L=@FCx@(fGKh(nMpVC zLB3d@(sOiR;<)TrVa?fz0EhW?UDZJ-+XTdOvDT?u-WTQh(A`HdqsoI??R~epr2X|A z&l_VDN;mGzIC^>>>cUSb5GXSc5dN(#^vruxKd^3lwT?Yc5uKF>B^dWp83TV z?&Pq-HX9OubGt-MU9*1S3XIQt6o0=*oH|?(Crw1|aEW%9+KG73N_m@>wVP*5-*|si z>p^!Etzi4R!9ipqzPUvhyW6pQSBMpsYUQc7r>Dzc?V3gsdhkBKyP#G=yF^;djGxQl zTQ^&9M$J)|f*lj4XsH-%8Y63_?+AcE&I3>7wk@F!yFr-erO3un78}OGG*f@v>zISQ z2Yz>I{Eg1t*CL*DWh zb<8#jJW-Zh`*z;;t{y$7j@1<^4^@8e7{3}V(UFntc=as3;;k5k#KlIz?gMTx_zL9I@5Zn3Uz*l`rsrIQD@y6BQ#&Wd1`TL97UN=I3Gv;OAl zq5$;X1w$Q#)}qTR#x_Uw=(zb!;+U%CD^1=DKIMYx;2O9evE~>xl`G@MFuk=- zG9cf|8e)vy(@1r1@Y*2__nE1LId<+v-OLD;wktDDDzybRp7^KU8%J)G%o!%$z}>ym zf^}OLA(n}jI1#4ecc)8u;m)RYwdh%_d`RS+iwc`4*H+G_!6pUW50@z^oo%KZs4+V7 zZ8JP}B-i$x87oZOh+aQ#(4i=YXFeB?Ebq9bjCgCSU$PR^(IkTOW>(_PTE-465OD17 zklm#u<)2?@O156dx&okg1)SnL8{RBL!m(x95v`MDNAFMSR1~%eThUuwE#+&%srPT{N}BSCc!!FIQ3)g_?^Ymv zRq|vb*;AZfdxDKNCS4|wvq0N7Jk2p}4HMmh2^Hpos`YqYKh&?r&g;w1w65`x2I-O! zg-1$y9crL`odWS2z38-yMsQXc4)-6}6{skK<{6Sk=vwuUONRwLK@a}H@1DmkqS(Yb z@Hn$OW@#RQN@qoaLJFrQSs-pA6X0B1owu?bN|UcRUVnG2`0Nmjg6<8tO!h|WFUEzO zcA+cS4zQd%==$mQEcY9ijlzI+VLy_=HeyWcrb$;Os|5t<+ji(?`yqnUTBYs0rSQ=r zissz~Noxu~w>E!^i$!FKh~Cq{Lh{1;+UDT9^vX4{yk&h3Qb$MV**%z72~JLkNjIKL zD7n}OsRb1rR+EXb!YB~NN+v_w0)YF{0fPa52+ zSUBeI#HE0GKB~ZU{(;R~qCZ>6f6fNlGhj3TwKMk>=qXyp*Z6umC`dlq zp3o`1JKvu4M#CtpLBNs}tvfmm)!KvP)Z7rqfx!i~?kA2k0t#1j*vIYDAR^dsr$zG~ zw58Cbpgo_`ULB~nGSH-GhK(Pqd|8z)Zyg)$|BzpOZO!R1nl_5hD)BjOJdEGxJd2CJ zyq4Ka$%X2z7xd@e+NTj!b!wfJoH0ZXo10Y~LMM$WA>ya?TvJ>{v*+=3>zyjk2Xz|K zBaS<7tl+$xO8^;8Clk-Bhz1ejM#^o-~{ZT0B^W1^o;FFSvP04Y& zwo%X52M5V%sXFm56}TSVj+H9FJRxqrv#foanMSk|qQ&PSj)TrtPQvN0&)n$V*h-Yb zQf=>-5Jm4hNHZj;f?a^bRSy!?z|bcA`9suSku9>^3l;HO9EMDCGUL!Z^x*3K&Q-vn zKh%Ub$ehnlTBdgoNKIcBP?)Ronjw~_&rzvKcJp9yhyCJDHJn->m21ccqTUX;G`X~KbA%ykUK2M%Y-d{>^3dTIGV$ z`Yh>!4(-0}?HYZa&`&qna78+H;q@t}#xF%LTpcDeu`=zlb-R3AxBh<6lRtOKkLkID zEHZlTh>EV|`y=@Ij`a>8f3#l4Gu~?1H^hy_lGY91(jzvdz+92(z8<~n6OnbxTE)aV zE_=a)Qs4`K@ff8+-qS6Vf?CdCza;w7CA%ar9?fmFs+MY!a#`^0LYyYH^*L2` z(U$y9pi`z>&Ost)uTyrTux1Z+f@ZhJ+uWAsV}!xZ!IzX({%c9^9~J=}uf5@Oc|*)Q z;p_Wu-)7;}ohAZ=);b7-fa%htXA~PC5#MJeJ3F8i_}5JyT1$qW1W-gz?^d;tas5K9 zH4~A&Zf7^?;a;S9DyQ%l|7fN&FsaDAE_G6`*}E3CEyn8B&}l^oJE@Nzl}(W~ZeTho z{H8&noMjKHK}-Ykb_k^oVHQ;Pv|CVwI zca+*=aLV{_hlX$0q7OA~q4#~QuwHK2EfVo{fvvs(Q{$TrkPum%H89NGm>GWnV%I)F z_niC(&hW9MVQ*0)Tg`^q{<&L1_qQQ#5q7Abw!wYKmAP>R!pznP?fS{JP5pPF5laWc zpg9(xAf*D_-&Dm)_T5qPDh16_6CdVdpZFJdQm^8*b3R3vSP)EX4Z6dRpV@G~FRIkm z-OM0X_m{CUeAdeynA${a^^@~7*BU3HBUIR}DR1lET3N7YUEllk!Q*U@KP}+CzuAG@ zapZtk(; z1JMp;-LGH&Ai_N(pE6||V;cE-I%*vjo||b7U%zv;ZfSfMdE?82r{l%ce4Jq8^TEcG zjXA=EA{LRCan267LEJk>+%wWZ#ho3n?euj^PM8kWLP{EO%rMFNvK!&L3psyoOIGM9oUJn!kr z*Qv~#X~W*m@7_!6Qt;w@PYe_J!E<2{^T?TU`gF=Piv#A&cKhf4$ItG;$pbMvW30PEBK(GqC%~xx(!SuPZwXZHjJLH0 zngzB;#BKsZ2R~dV?#dxwenF1?8hWNQ(VTx*L=n4L3p}qAvsLK#y$86R%@a;U=<>;{ zX%DZQ@`h2*{lwj)@C_LMo6Q|?f~{Wdh}-ag9{_w6x;cKMU9fnByoFY=~JMtQOq|nD<OeKWCBZ$$dmNaBF&QlZT2 z#<&oL2YW#M-JpDiOrx&YHxdWVC#(UmkM)<#UsV-s79*6HfVbXGbyq)V+8vR{RK2L3 zt9tK(Js<8^dA~ZtEz0Wc+)Mc|NEWcy)yo9dsjK8{1XjN{xkGVuwvM{RTcnDzEtm$JONV>m2`lRIOnfUjV0+n`<-tY;)DNHyzxI{o9 zjCE8yS>KnYr-#kdVaIdaUayr0e>xs6W!AQkQMr3hEnvLbEz?LCc7Gx2{IQhVVE;8& zc3bF$V8FzGz4B8azfZP7l|Hn|W0PXOqPr>qk_%j*PfG zZqsUTbt{8eR~l_)p#aWzLXPDx!57~przNO&QvG@Iddw$46hi+MdyQl&!Y~x%@pLkn z7ckK;o)Tu4A!uy4@uV=HR>(bGfv47NL-Gd9jz%IHc=@>2Mq0JFq3-k~BfT33y zKc%=bggcREJ)G_Zk%^d{6U%f@Z0->DgKEe-*S}|&WeI>BjK{(5K%FdZC<~_KTcUeT zlHq3dC@4VU1H-!9PDKCXPuy_wjffHeNIe3S%qtTK9S##-k0~-o&qsh_t@&$+LLi&tH^)tZcJy{#96A;f?a2W-pThHYhN4 zFF-8r5fcW(Na?D$w@AWp$ZAv+!TU!NpKNqlGpxy8dYR?G3*(b*Rn^;q-2j5c5p z7s_#R$6XgkEE?I6`pIGTvC_G6=9H7|BFY%!WS|4BnAAIM{g(Y0d=sSPJP$uX^PQyY zf}@7Qy$V06ruQ2#zB4+tY`~rQ>88P^GeFKCA)?cr(kLXpf>HUYc}%e?5K8|N`v35V zg01^Iy(b~>>Wj0+jhf_b#r7bB%sRg%ZjamDV6i&j<#QDptb(gR(URtAz1+KiRS|Hz zMfnR2Qj}KfMU`oJPyuCPonIbly*cQncUG<*?Fz-6Dcr4?L*g1#&Y4xM>4sX1!}~o0 zo8B#Z6uNy{(!Qd}zni$Mj}3Spdhzu7<54uMR=Y87S%0Ah9mqy+r-q6LIRcX~ksT~l z#(?|)j-aWKqNJ`$_opgsq-3ZA2EM~i;dcATa*zb=7{C0Q8r{u_y67;-3t&+fVZtaS z|950G>W*u5;F=An;uBWNIw7YfKC&xKV_@%3N*0Mpr8!0S9O+@M=EMBy$nLwhmP?!> z>Kg_RZIln|c8#9aPbs!s75cvCL>2N+EC5GwBA5sM~r*j`EOBZ4c-UucEZ}@Rz7`Otb~IQB1dmUJFJ##$wAUe<{7b(y6csfOb}^FJCX9 z(}x>5Vzjykub`-^a~-;|1YNP&px_76w-RsgfwH0$f2YZZWPgttVmP2ZckBHz`cRr# zW`Sx0d#Us=&pUmX=eFkN9tdn#Uni=;2EPwTgl;RC5sZu31HtlW`U3TVqQZc}Dpji) zg>eykMe8?HiqfeEZX>fIN&-qNC$F0$p>n2))Q;{#Sv$;URq~K!=ZA{gASO2m%#U^23Q251S-d!ZZ8gPa=R?Uz)UV+_@jV__x{q9VsP!jvLaHp z$y70& zPolMwzn|~zUQUx33zy*b_~ZFKc>nYYf}Z#uhPIAXrQhQZr%+vk0Ub4z%w+#E$mlQC z)OTfZn3V0zWV*omoxA+@YsMkLpo8%~*LAPqw3Wn=XQ;ZO{hA?u+#k2r;3MeA9FsCsJ8(J_^iJJYOZN+HKC$asdZog44tRCSB#p zXj;$S@yeXOsMDk%W*MryIL@&@84Nv3Eiq4~)I=oUn2uOE>=AJ1bkEa&cC^vpr7^`= zuir6a%mPw(&OUPrYbPNvW4`TXwqm9OpBsTAaJ+hYtUem?Zu9y zw03LuwDXs4XHyx#wrb>rssi#{CBnP|m+RT~gz0uETSD)V|QrV3N2C~Zv$j@2{!^1y$;_|OcE;nY?Y^V6>KcA_8comb?JL#StkJYZn z_+y{+eat|FQtMEM?W5VJxz`5UtwBlLt6bIr9ez~Bx9K)&t8CQM?DWsXJ=0BrIw1R> zFOI}dXfUd)#a(7Phdy@jNU_Q5;0v+ZU?KgulPyW*GYYqc331V-*Pk;~PJU|F00>$~DzHgSyLu21~ zX!5q=H_W`7E}#KaHWmvU`BUgxqYXu*i)jjv6ms|*w!lCTH3^E0YIw9!{+k{tPB~k8 zC`t-RP0Q>b=57Lz85K4M>anypi&{dNHaxvk^#d`$aAS6&67*PKip{c4qndUU$AIwc zhsD8M%?IHx&F(FTtfF+F2+9vOm0ipq6t(VpN0|8|_VWo|Y$E5?QEX&40bsT{wyH-` z

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%0DJ_F;Z1 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 Ykvv{v%AD)9c;N4 Date: Thu, 7 Jul 2022 17:28:46 +0200 Subject: [PATCH 11/17] test: setup local e2e env --- .goreleaser.yaml | 2 +- e2e/docker-compose-overwrite.yaml | 4 ++ e2e/run.sh | 63 +++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 e2e/docker-compose-overwrite.yaml create mode 100755 e2e/run.sh diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 0e652407c17..845a2be03e7 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -10,7 +10,7 @@ release: before: hooks: - docker build -f build/grpc/Dockerfile -t zitadel-base:local . - - docker build -f build/zitadel/Dockerfile . -t zitadel-go-test --target go-codecov -o .artifacts/codecov +# - docker build -f build/zitadel/Dockerfile . -t zitadel-go-test --target go-codecov -o .artifacts/codecov - docker build -f build/zitadel/Dockerfile . -t zitadel-go-base --target go-copy -o .artifacts/grpc/go-client - sh -c "cp -r .artifacts/grpc/go-client/* ." - docker build -f build/console/Dockerfile . -t zitadel-npm-base --target npm-copy -o .artifacts/grpc/js-client diff --git a/e2e/docker-compose-overwrite.yaml b/e2e/docker-compose-overwrite.yaml new file mode 100644 index 00000000000..3b086bd25ee --- /dev/null +++ b/e2e/docker-compose-overwrite.yaml @@ -0,0 +1,4 @@ +services: + zitadel: + image: 'zitadel:${BUILD_DATE}' + diff --git a/e2e/run.sh b/e2e/run.sh new file mode 100755 index 00000000000..e23d3d110d5 --- /dev/null +++ b/e2e/run.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +set -e + +DO_BUILD=1 +DO_DEPLOY=1 +DO_TEST=1 + +while getopts 'bdt:' OPTION; do + case "$OPTION" in + b) + echo "skipping build" + DO_BUILD=0 + ;; + d) + echo "skipping deployment" + DO_DEPLOY=0 + ;; + s) + echo "skipping tests" + DO_TEST=0 + ;; + ?) + echo "script usage: $(basename \$0) [-b] [-d] [-t]" >&2 + echo "-b skip build" + echo "-d skip deployment" + echo "-t skip tests" + exit 1 + ;; + esac +done +shift "$(($OPTIND -1))" + +if [ "$DO_BUILD" -eq "1" ]; then + # build the zitadel binary + goreleaser build --snapshot --single-target --rm-dist +fi + +# extract some metadata for building and tagging the docker image +function extract_metadata () +{ + cat .artifacts/goreleaser/$1 | jq -r $2 +} +BUILD_DATE="$(extract_metadata metadata.json '.date')" + +# Use simple local date +BUILD_DATE="${BUILD_DATE%.*}" +# Replace colons and plus signs +export BUILD_DATE="${BUILD_DATE//:/_}" + + +if [ "$DO_BUILD" -eq "1" ]; then + BUILD_PATH="$(dirname $(extract_metadata artifacts.json '.[0].path'))" + BUILD_VERSION="$(extract_metadata metadata.json '.version')" + + # build the docker image + docker build --file ./build/Dockerfile --tag zitadel:latest --tag zitadel:$BUILD_VERSION --tag zitadel:$BUILD_DATE $BUILD_PATH +fi + +if [ "$DO_DEPLOY" -eq "1" ]; then + # run cockroach and zitadel + docker compose --file ./docs/docs/guides/installation/run/docker-compose.yaml --file ./e2e/docker-compose-overwrite.yaml up --detach +fi From 190a45414093701c3f4c88cf8d75ad20fe5531d3 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Fri, 8 Jul 2022 08:58:23 +0200 Subject: [PATCH 12/17] feat(console): deactivate, reactivate org, fix signedout route (#3834) * org detail * feat: org deactivate, reactivate * statehandler includes instead of startsWith * fix signout route * Update console/src/assets/i18n/de.json Co-authored-by: Livio Spring * french Co-authored-by: Livio Spring --- console/src/app/app-routing.module.ts | 15 +-- console/src/app/app.component.html | 59 +++++----- console/src/app/app.component.ts | 1 + console/src/app/app.module.ts | 3 +- console/src/app/guards/auth.guard.ts | 3 +- .../app/modules/header/header.component.html | 97 +++++++-------- .../orgs/org-detail/org-detail.component.html | 18 +++ .../orgs/org-detail/org-detail.component.ts | 51 ++++++++ .../signedout/signedout-routing.module.ts | 14 +-- .../pages/signedout/signedout.component.html | 17 ++- .../pages/signedout/signedout.component.scss | 11 +- .../pages/signedout/signedout.component.ts | 5 +- .../app/pages/signedout/signedout.module.ts | 14 +-- .../statehandler/statehandler.service.ts | 4 +- console/src/app/services/theme.service.ts | 110 +++++++++--------- console/src/assets/i18n/de.json | 12 ++ console/src/assets/i18n/en.json | 12 ++ console/src/assets/i18n/fr.json | 12 ++ console/src/assets/i18n/it.json | 12 ++ .../scss/styles/footer/footer_theme.scss | 2 +- .../resources/themes/scss/styles/vars.scss | 22 ++-- .../resources/themes/zitadel/css/zitadel.css | 24 ++-- 22 files changed, 316 insertions(+), 202 deletions(-) diff --git a/console/src/app/app-routing.module.ts b/console/src/app/app-routing.module.ts index 769bfe8513e..abda7eff36d 100644 --- a/console/src/app/app-routing.module.ts +++ b/console/src/app/app-routing.module.ts @@ -13,6 +13,10 @@ const routes: Routes = [ loadChildren: () => import('./pages/home/home.module').then((m) => m.HomeModule), canActivate: [AuthGuard], }, + { + path: 'signedout', + loadChildren: () => import('./pages/signedout/signedout.module').then((m) => m.SignedoutModule), + }, { path: 'orgs', loadChildren: () => import('./pages/org-list/org-list.module').then((m) => m.OrgListModule), @@ -38,12 +42,7 @@ const routes: Routes = [ { path: 'users', canActivate: [AuthGuard], - children: [ - { - path: '', - loadChildren: () => import('src/app/pages/users/users.module').then((m) => m.UsersModule), - }, - ], + loadChildren: () => import('src/app/pages/users/users.module').then((m) => m.UsersModule), }, { path: 'instance', @@ -170,10 +169,6 @@ const routes: Routes = [ roles: ['policy.read'], }, }, - { - path: 'signedout', - loadChildren: () => import('./pages/signedout/signedout.module').then((m) => m.SignedoutModule), - }, { path: '**', redirectTo: '/', diff --git a/console/src/app/app.component.html b/console/src/app/app.component.html index aad85dc9091..4c75d9da996 100644 --- a/console/src/app/app.component.html +++ b/console/src/app/app.component.html @@ -1,32 +1,31 @@ - - -
- +
+ + - -
-
- -
-
- - -
+ - + +
+
+ +
+
+ + +
diff --git a/console/src/app/app.component.ts b/console/src/app/app.component.ts index 3eef1937e84..6ebff5402ff 100644 --- a/console/src/app/app.component.ts +++ b/console/src/app/app.component.ts @@ -69,6 +69,7 @@ export class AppComponent implements OnDestroy { private activatedRoute: ActivatedRoute, @Inject(DOCUMENT) private document: Document, ) { + this.themeService.loadPrivateLabelling(true); console.log( '%cWait!', 'text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; color: #5469D4; font-size: 50px', diff --git a/console/src/app/app.module.ts b/console/src/app/app.module.ts index 71e7a1b6441..622abcf60fd 100644 --- a/console/src/app/app.module.ts +++ b/console/src/app/app.module.ts @@ -26,7 +26,6 @@ import { HeaderModule } from './modules/header/header.module'; import { KeyboardShortcutsModule } from './modules/keyboard-shortcuts/keyboard-shortcuts.module'; import { NavModule } from './modules/nav/nav.module'; import { WarnDialogModule } from './modules/warn-dialog/warn-dialog.module'; -import { SignedoutComponent } from './pages/signedout/signedout.component'; import { HasRolePipeModule } from './pipes/has-role-pipe/has-role-pipe.module'; import { AdminService } from './services/admin.service'; import { AuthenticationService } from './services/authentication.service'; @@ -79,7 +78,7 @@ const authConfig: AuthConfig = { }; @NgModule({ - declarations: [AppComponent, SignedoutComponent], + declarations: [AppComponent], imports: [ AppRoutingModule, CommonModule, diff --git a/console/src/app/guards/auth.guard.ts b/console/src/app/guards/auth.guard.ts index 084475bb97d..1b86cbebd8e 100644 --- a/console/src/app/guards/auth.guard.ts +++ b/console/src/app/guards/auth.guard.ts @@ -4,13 +4,12 @@ import { AuthConfig } from 'angular-oauth2-oidc'; import { Observable } from 'rxjs'; import { AuthenticationService } from '../services/authentication.service'; -import { GrpcAuthService } from '../services/grpc-auth.service'; @Injectable({ providedIn: 'root', }) export class AuthGuard implements CanActivate { - constructor(private auth: AuthenticationService, private authService: GrpcAuthService) {} + constructor(private auth: AuthenticationService) {} public canActivate( route: ActivatedRouteSnapshot, diff --git a/console/src/app/modules/header/header.component.html b/console/src/app/modules/header/header.component.html index 09a02ca46d6..5d3a9f47d76 100644 --- a/console/src/app/modules/header/header.component.html +++ b/console/src/app/modules/header/header.component.html @@ -196,55 +196,56 @@
- - - + +
+ - - + + + + diff --git a/console/src/app/pages/orgs/org-detail/org-detail.component.html b/console/src/app/pages/orgs/org-detail/org-detail.component.html index 3b2641a6371..cdc1407c6df 100644 --- a/console/src/app/pages/orgs/org-detail/org-detail.component.html +++ b/console/src/app/pages/orgs/org-detail/org-detail.component.html @@ -5,7 +5,25 @@ [isInactive]="org?.state === OrgState.ORG_STATE_INACTIVE" [hasContributors]="true" stateTooltip="{{ 'ORG.STATE.' + org?.state | translate }}" + [hasActions]="['org.write:' + org?.id, 'org.write$'] | hasRole | async" > + + + + + { + if (resp) { + this.mgmtService + .reactivateOrg() + .then(() => { + this.toast.showInfo('ORG.TOAST.REACTIVATED', true); + this.org.state = OrgState.ORG_STATE_ACTIVE; + }) + .catch((error) => { + this.toast.showError(error); + }); + } + }); + } else if (newState === OrgState.ORG_STATE_INACTIVE) { + const dialogRef = this.dialog.open(WarnDialogComponent, { + data: { + confirmKey: 'ACTIONS.DEACTIVATE', + cancelKey: 'ACTIONS.CANCEL', + titleKey: 'ORG.DIALOG.DEACTIVATE.TITLE', + descriptionKey: 'ORG.DIALOG.DEACTIVATE.DESCRIPTION', + }, + width: '400px', + }); + dialogRef.afterClosed().subscribe((resp) => { + if (resp) { + this.mgmtService + .deactivateOrg() + .then(() => { + this.toast.showInfo('ORG.TOAST.DEACTIVATED', true); + this.org.state = OrgState.ORG_STATE_INACTIVE; + }) + .catch((error) => { + this.toast.showError(error); + }); + } + }); + } + } + private async getData(): Promise { this.mgmtService .getMyOrg() diff --git a/console/src/app/pages/signedout/signedout-routing.module.ts b/console/src/app/pages/signedout/signedout-routing.module.ts index 3ff829d9e20..24071a5df14 100644 --- a/console/src/app/pages/signedout/signedout-routing.module.ts +++ b/console/src/app/pages/signedout/signedout-routing.module.ts @@ -4,14 +4,14 @@ import { RouterModule, Routes } from '@angular/router'; import { SignedoutComponent } from './signedout.component'; const routes: Routes = [ - { - path: '', - component: SignedoutComponent, - }, + { + path: '', + component: SignedoutComponent, + }, ]; @NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], }) -export class SignedoutRoutingModule { } +export class SignedoutRoutingModule {} diff --git a/console/src/app/pages/signedout/signedout.component.html b/console/src/app/pages/signedout/signedout.component.html index 89177b464ae..c05e784caa6 100644 --- a/console/src/app/pages/signedout/signedout.component.html +++ b/console/src/app/pages/signedout/signedout.component.html @@ -5,11 +5,18 @@ zitadel logo -

{{'USER.SIGNEDOUT' | translate}}

+

{{ 'USER.SIGNEDOUT' | translate }}

- + - \ No newline at end of file + diff --git a/console/src/app/pages/signedout/signedout.component.scss b/console/src/app/pages/signedout/signedout.component.scss index d75c5618ae9..aa985364963 100644 --- a/console/src/app/pages/signedout/signedout.component.scss +++ b/console/src/app/pages/signedout/signedout.component.scss @@ -9,6 +9,7 @@ display: flex; flex-direction: column; align-items: center; + margin-top: 50px; h1 { font-size: 3rem; @@ -24,16 +25,6 @@ img { height: 100px; max-width: 170px; - margin-bottom: 2rem; - } - - button { - display: block; - padding: 0.5rem 4rem; - - i { - margin-left: 0.5rem; - } } } } diff --git a/console/src/app/pages/signedout/signedout.component.ts b/console/src/app/pages/signedout/signedout.component.ts index c475679d5a2..1e33fef5563 100644 --- a/console/src/app/pages/signedout/signedout.component.ts +++ b/console/src/app/pages/signedout/signedout.component.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { ThemeService } from 'src/app/services/theme.service'; @Component({ selector: 'cnsl-signedout', @@ -8,7 +9,9 @@ import { Component } from '@angular/core'; export class SignedoutComponent { public dark: boolean = true; - constructor() { + constructor(themeService: ThemeService) { + themeService.loadPrivateLabelling(); + const theme = localStorage.getItem('theme'); this.dark = theme === 'dark-theme' ? true : theme === 'light-theme' ? false : true; } diff --git a/console/src/app/pages/signedout/signedout.module.ts b/console/src/app/pages/signedout/signedout.module.ts index 4394648dc59..1fc6a7fb659 100644 --- a/console/src/app/pages/signedout/signedout.module.ts +++ b/console/src/app/pages/signedout/signedout.module.ts @@ -1,15 +1,15 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { TranslateModule } from '@ngx-translate/core'; import { SharedModule } from 'src/app/modules/shared/shared.module'; import { SignedoutRoutingModule } from './signedout-routing.module'; +import { SignedoutComponent } from './signedout.component'; @NgModule({ - declarations: [], - imports: [ - CommonModule, - SignedoutRoutingModule, - SharedModule, - ], + declarations: [SignedoutComponent], + imports: [CommonModule, SignedoutRoutingModule, MatButtonModule, MatTooltipModule, TranslateModule, SharedModule], }) -export class SignedoutModule { } +export class SignedoutModule {} diff --git a/console/src/app/services/statehandler/statehandler.service.ts b/console/src/app/services/statehandler/statehandler.service.ts index 585c4982ab5..df9253e4d24 100644 --- a/console/src/app/services/statehandler/statehandler.service.ts +++ b/console/src/app/services/statehandler/statehandler.service.ts @@ -49,10 +49,10 @@ export class StatehandlerServiceImpl implements StatehandlerService, OnDestroy { switchMap((url: string) => { if (url.includes('?login_hint=')) { const newUrl = this.removeParam('login_hint', url); - const urlWithoutBasePath = newUrl.startsWith('/ui/console') ? newUrl.replace('/ui/console', '') : newUrl; + const urlWithoutBasePath = newUrl.includes('/ui/console') ? newUrl.replace('/ui/console', '') : newUrl; return of(this.processor.createState(urlWithoutBasePath)); } else if (url) { - const urlWithoutBasePath = url.startsWith('/ui/console') ? url.replace('/ui/console', '') : url; + const urlWithoutBasePath = url.includes('/ui/console') ? url.replace('/ui/console', '') : url; return of(this.processor.createState(urlWithoutBasePath)); } else { return of(undefined); diff --git a/console/src/app/services/theme.service.ts b/console/src/app/services/theme.service.ts index b53370b1e16..6a5fb73de8d 100644 --- a/console/src/app/services/theme.service.ts +++ b/console/src/app/services/theme.service.ts @@ -140,70 +140,72 @@ export class ThemeService { this.saveTextColor(lightText, false); }; - public loadPrivateLabelling(): void { - this.setDefaultColors(); + public loadPrivateLabelling(forceDefault: boolean = false): void { + if (forceDefault) { + this.setDefaultColors(); + } else { + const isDark = (color: string) => this.isDark(color); + const isLight = (color: string) => this.isLight(color); - const isDark = (color: string) => this.isDark(color); - const isLight = (color: string) => this.isLight(color); + this.authService + .getMyLabelPolicy() + .then((lpresp) => { + const labelpolicy = lpresp.policy; - this.authService - .getMyLabelPolicy() - .then((lpresp) => { - const labelpolicy = lpresp.policy; + const darkPrimary = labelpolicy?.primaryColorDark || '#bbbafa'; + const lightPrimary = labelpolicy?.primaryColor || '#5469d4'; - const darkPrimary = labelpolicy?.primaryColorDark || '#bbbafa'; - const lightPrimary = labelpolicy?.primaryColor || '#5469d4'; + const darkWarn = labelpolicy?.warnColorDark || '#ff3b5b'; + const lightWarn = labelpolicy?.warnColor || '#cd3d56'; - const darkWarn = labelpolicy?.warnColorDark || '#ff3b5b'; - const lightWarn = labelpolicy?.warnColor || '#cd3d56'; + let darkBackground = labelpolicy?.backgroundColorDark; + let lightBackground = labelpolicy?.backgroundColor; - let darkBackground = labelpolicy?.backgroundColorDark; - let lightBackground = labelpolicy?.backgroundColor; + let darkText = labelpolicy?.fontColorDark ?? '#ffffff'; + let lightText = labelpolicy?.fontColor ?? '#000000'; - let darkText = labelpolicy?.fontColorDark ?? '#ffffff'; - let lightText = labelpolicy?.fontColor ?? '#000000'; + this.savePrimaryColor(darkPrimary, true); + this.savePrimaryColor(lightPrimary, false); - this.savePrimaryColor(darkPrimary, true); - this.savePrimaryColor(lightPrimary, false); + this.saveWarnColor(darkWarn, true); + this.saveWarnColor(lightWarn, false); - this.saveWarnColor(darkWarn, true); - this.saveWarnColor(lightWarn, false); + if (darkBackground && !isDark(darkBackground)) { + console.info( + `Background (${darkBackground}) is not dark enough for a dark theme. Falling back to zitadel background`, + ); + darkBackground = '#111827'; + } + this.saveBackgroundColor(darkBackground || '#111827', true); - if (darkBackground && !isDark(darkBackground)) { - console.info( - `Background (${darkBackground}) is not dark enough for a dark theme. Falling back to zitadel background`, - ); - darkBackground = '#111827'; - } - this.saveBackgroundColor(darkBackground || '#111827', true); + if (lightBackground && !isLight(lightBackground)) { + console.info( + `Background (${lightBackground}) is not light enough for a light theme. Falling back to zitadel background`, + ); + lightBackground = '#fafafa'; + } + this.saveBackgroundColor(lightBackground || '#fafafa', false); - if (lightBackground && !isLight(lightBackground)) { - console.info( - `Background (${lightBackground}) is not light enough for a light theme. Falling back to zitadel background`, - ); - lightBackground = '#fafafa'; - } - this.saveBackgroundColor(lightBackground || '#fafafa', false); + if (darkText && !isLight(darkText)) { + console.info( + `Text color (${darkText}) is not light enough for a dark theme. Falling back to zitadel's text color`, + ); + darkText = '#ffffff'; + } + this.saveTextColor(darkText || '#ffffff', true); - if (darkText && !isLight(darkText)) { - console.info( - `Text color (${darkText}) is not light enough for a dark theme. Falling back to zitadel's text color`, - ); - darkText = '#ffffff'; - } - this.saveTextColor(darkText || '#ffffff', true); - - if (lightText && !isDark(lightText)) { - console.info( - `Text color (${lightText}) is not dark enough for a light theme. Falling back to zitadel's text color`, - ); - lightText = '#000000'; - } - this.saveTextColor(lightText || '#000000', false); - }) - .catch((error) => { - console.error('could not load private labelling policy!', error); - this.setDefaultColors(); - }); + if (lightText && !isDark(lightText)) { + console.info( + `Text color (${lightText}) is not dark enough for a light theme. Falling back to zitadel's text color`, + ); + lightText = '#000000'; + } + this.saveTextColor(lightText || '#000000', false); + }) + .catch((error) => { + console.error('could not load private labelling policy!', error); + this.setDefaultColors(); + }); + } } } diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index 0d54b2f0e81..37ff10fc84e 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -757,6 +757,8 @@ "LISTDESCRIPTION": "Wähle eine Organisation aus.", "ACTIVE": "Aktiv", "CREATE": "Organisation erstellen", + "DEACTIVATE": "Organisation deaktivieren", + "REACTIVATE": "Organisation reaktivieren", "NOPERMISSION": "Sie haben keine Berechtigung, auf Einstellungen der Organisation zuzugreifen.", "USERSELFACCOUNT": "Verwenden Sie Ihr persönliches Konto als Organisationsinhaber", "ORGDETAIL_TITLE": "Gebe den Namen und die Domain für die neue Organisation ein.", @@ -821,6 +823,16 @@ "MEMBERREMOVED": "Manager entfernt.", "MEMBERCHANGED": "Manager geändert.", "SETPRIMARY": "Primäre Domain gesetzt." + }, + "DIALOG": { + "DEACTIVATE": { + "TITLE": "Organisation deaktivieren", + "DESCRIPTION": "Sie sind im Begriff Ihre Organisation zu deaktivieren. User können Sich danach nicht mehr anmelden? Wollen Sie fortfahren?" + }, + "REACTIVATE": { + "TITLE": "Organisation reaktivieren", + "DESCRIPTION": "Sie sind im Begriff Ihre Organisation zu reaktivieren. User können Sich danach wieder anmelden? Wollen Sie fortfahren?" + } } }, "SETTINGS": { diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index 62482e686c8..fee717fb4cd 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -757,6 +757,8 @@ "LISTDESCRIPTION": "Choose an organization.", "ACTIVE": "Active", "CREATE": "Create Organization", + "DEACTIVATE": "Deactivate Organization", + "REACTIVATE": "Reactivate Organization", "NOPERMISSION": "You don't have the permission to access organization settings.", "USERSELFACCOUNT": "Use your personal account as organization owner", "ORGDETAIL_TITLE": "Enter the name and domain of your new organization.", @@ -821,6 +823,16 @@ "MEMBERREMOVED": "Manager removed.", "MEMBERCHANGED": "Manager changed.", "SETPRIMARY": "Primary domain set." + }, + "DIALOG": { + "DEACTIVATE": { + "TITLE": "Deactivate organization", + "DESCRIPTION": "You are about to deactivate your organization. Users won't be able to login afterwards. Are you sure to proceed?" + }, + "REACTIVATE": { + "TITLE": "Reactivate organization", + "DESCRIPTION": "You are about to reactivate your organization. Users will be able to login again. Are you sure to proceed?" + } } }, "SETTINGS": { diff --git a/console/src/assets/i18n/fr.json b/console/src/assets/i18n/fr.json index 70ab9a6231e..0bb2e712f60 100644 --- a/console/src/assets/i18n/fr.json +++ b/console/src/assets/i18n/fr.json @@ -757,6 +757,8 @@ "LISTDESCRIPTION": "Choisissez une organisation.", "ACTIVE": "Actif", "CREATE": "Créer une organisation", + "DEACTIVATE": "Désactiver l'organisation", + "REACTIVATE": "Réactiver l'organisation", "NOPERMISSION": "Vous n'avez pas la permission d'accéder aux paramètres de l'organisation.", "USERSELFACCOUNT": "Utilisez votre compte personnel comme propriétaire de l'organisation", "ORGDETAIL_TITLE": "Saisissez le nom et le domaine de votre nouvelle organisation.", @@ -821,6 +823,16 @@ "MEMBERREMOVED": "Gestionnaire supprimé.", "MEMBERCHANGED": "Gestionnaire modifié.", "SETPRIMARY": "Domaine primaire défini." + }, + "DIALOG": { + "DEACTIVATE": { + "TITLE": "Désactiver l'organisation", + "DESCRIPTION": "Vous êtes sur le point de désactiver votre organisation. Les utilisateurs ne peuvent plus se connecter ? Voulez-vous continuer ?" + }, + "REACTIVATE": { + "TITLE": "Réactiver l'organisation", + "DESCRIPTION": "Vous êtes sur le point de réactiver votre organisation. Les utilisateurs peuvent ensuite se reconnecter ? Voulez-vous continuer ?" + } } }, "SETTINGS": { diff --git a/console/src/assets/i18n/it.json b/console/src/assets/i18n/it.json index 28bd39d4034..09ce1655046 100644 --- a/console/src/assets/i18n/it.json +++ b/console/src/assets/i18n/it.json @@ -757,6 +757,8 @@ "LISTDESCRIPTION": "Scegli un'organizzazione.", "ACTIVE": "Attivo", "CREATE": "Creare un'organizzazione", + "DEACTIVATE": "Disattiva organizzazione", + "REACTIVATE": "Riattiva organizzazione", "NOPERMISSION": "Non hai l'autorizzazione per accedere alle impostazioni dell'organizzazione.", "USERSELFACCOUNT": "Usa il tuo account personale come proprietario dell'organizzazione", "ORGDETAIL_TITLE": "Inserisci il nome e il dominio della tua nuova organizzazione.", @@ -821,6 +823,16 @@ "MEMBERREMOVED": "Manager rimosso con successo", "MEMBERCHANGED": "Manager cambiato con successo", "SETPRIMARY": "Dominio primario cambiato con successo" + }, + "DIALOG": { + "DEACTIVATE": { + "TITLE": "Disattivare l'organizzazione", + "DESCRIPTION": "Stai per disattivate la tua organizzazione. Utenti dell' organizzazione non possono più accedere in seguito. Sei sicuro di procedere?" + }, + "REACTIVATE": { + "TITLE": "Riattivare l'organizzazione", + "DESCRIPTION": "Stai per riattivare la tua organizzazione. Utenti dell' organizzazione possono accedere nuovamente dopo l'attivazione. Vuoi procedere?" + } } }, "SETTINGS": { diff --git a/internal/api/ui/login/static/resources/themes/scss/styles/footer/footer_theme.scss b/internal/api/ui/login/static/resources/themes/scss/styles/footer/footer_theme.scss index 9133524fa22..80e9226a98f 100644 --- a/internal/api/ui/login/static/resources/themes/scss/styles/footer/footer_theme.scss +++ b/internal/api/ui/login/static/resources/themes/scss/styles/footer/footer_theme.scss @@ -19,7 +19,7 @@ } a { - color: var(--zitadel-color-font-500); + color: var(--zitadel-color-text-500); } .lgn-logo-watermark { diff --git a/internal/api/ui/login/static/resources/themes/scss/styles/vars.scss b/internal/api/ui/login/static/resources/themes/scss/styles/vars.scss index b4986eaed13..6e815339221 100644 --- a/internal/api/ui/login/static/resources/themes/scss/styles/vars.scss +++ b/internal/api/ui/login/static/resources/themes/scss/styles/vars.scss @@ -50,17 +50,17 @@ --zitadel-color-input-border-active: var(--zitadel-color-primary-500); --zitadel-color-input-placeholder: var(--zitadel-color-grey-600); - --zitadel-color-font-50: rgb(0, 0, 0); - --zitadel-color-font-100: rgb(0, 0, 0); - --zitadel-color-font-200: rgb(0, 0, 0); - --zitadel-color-font-300: rgb(0, 0, 0); - --zitadel-color-font-400: rgb(0, 0, 0); - --zitadel-color-font-500: rgb(0, 0, 0); - --zitadel-color-font-600: rgb(0, 0, 0); - --zitadel-color-font-700: rgb(0, 0, 0); - --zitadel-color-font-800: rgb(0, 0, 0); - --zitadel-color-font-900: rgb(0, 0, 0); - --zitadel-color-font-contrast: rgb(255, 255, 255); + --zitadel-color-text-50: rgb(0, 0, 0); + --zitadel-color-text-100: rgb(0, 0, 0); + --zitadel-color-text-200: rgb(0, 0, 0); + --zitadel-color-text-300: rgb(0, 0, 0); + --zitadel-color-text-400: rgb(0, 0, 0); + --zitadel-color-text-500: rgb(0, 0, 0); + --zitadel-color-text-600: rgb(0, 0, 0); + --zitadel-color-text-700: rgb(0, 0, 0); + --zitadel-color-text-800: rgb(0, 0, 0); + --zitadel-color-text-900: rgb(0, 0, 0); + --zitadel-color-text-contrast: rgb(255, 255, 255); --zitadel-color-label: #0000008a; --zitadel-color-account-selector-hover: rgba(0, 0, 0, 0.02); diff --git a/internal/api/ui/login/static/resources/themes/zitadel/css/zitadel.css b/internal/api/ui/login/static/resources/themes/zitadel/css/zitadel.css index 6ee5e678148..05d7f50f039 100644 --- a/internal/api/ui/login/static/resources/themes/zitadel/css/zitadel.css +++ b/internal/api/ui/login/static/resources/themes/zitadel/css/zitadel.css @@ -44,17 +44,17 @@ --zitadel-color-input-border-hover: #1a1b1b; --zitadel-color-input-border-active: var(--zitadel-color-primary-500); --zitadel-color-input-placeholder: var(--zitadel-color-grey-600); - --zitadel-color-font-50: rgb(0, 0, 0); - --zitadel-color-font-100: rgb(0, 0, 0); - --zitadel-color-font-200: rgb(0, 0, 0); - --zitadel-color-font-300: rgb(0, 0, 0); - --zitadel-color-font-400: rgb(0, 0, 0); - --zitadel-color-font-500: rgb(0, 0, 0); - --zitadel-color-font-600: rgb(0, 0, 0); - --zitadel-color-font-700: rgb(0, 0, 0); - --zitadel-color-font-800: rgb(0, 0, 0); - --zitadel-color-font-900: rgb(0, 0, 0); - --zitadel-color-font-contrast: rgb(255, 255, 255); + --zitadel-color-text-50: rgb(0, 0, 0); + --zitadel-color-text-100: rgb(0, 0, 0); + --zitadel-color-text-200: rgb(0, 0, 0); + --zitadel-color-text-300: rgb(0, 0, 0); + --zitadel-color-text-400: rgb(0, 0, 0); + --zitadel-color-text-500: rgb(0, 0, 0); + --zitadel-color-text-600: rgb(0, 0, 0); + --zitadel-color-text-700: rgb(0, 0, 0); + --zitadel-color-text-800: rgb(0, 0, 0); + --zitadel-color-text-900: rgb(0, 0, 0); + --zitadel-color-text-contrast: rgb(255, 255, 255); --zitadel-color-label: #0000008a; --zitadel-color-account-selector-hover: rgba(0, 0, 0, 0.02); --zitadel-color-account-selector-active: rgba(0, 0, 0, 0.05); @@ -2819,7 +2819,7 @@ footer { } } footer a { - color: var(--zitadel-color-font-500); + color: var(--zitadel-color-text-500); } footer .lgn-logo-watermark { background: var(--zitadel-logo-powered-by) no-repeat; From dfa07a4cee24c7abe21d8e94567cd2fa015aa308 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Fri, 8 Jul 2022 09:06:38 +0200 Subject: [PATCH 13/17] chore(console): dependencies (#3893) * cli, core * material cdk * schematics * chore(deps-dev): bump karma-jasmine from 5.0.1 to 5.1.0 in /console (#3843) Bumps [karma-jasmine](https://github.com/karma-runner/karma-jasmine) from 5.0.1 to 5.1.0. - [Release notes](https://github.com/karma-runner/karma-jasmine/releases) - [Changelog](https://github.com/karma-runner/karma-jasmine/blob/master/CHANGELOG.md) - [Commits](https://github.com/karma-runner/karma-jasmine/compare/v5.0.1...v5.1.0) --- updated-dependencies: - dependency-name: karma-jasmine dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump google-proto-files from 2.5.2 to 3.0.0 in /console (#3840) Bumps [google-proto-files](https://github.com/googleapis/nodejs-proto-files) from 2.5.2 to 3.0.0. - [Release notes](https://github.com/googleapis/nodejs-proto-files/releases) - [Changelog](https://github.com/googleapis/nodejs-proto-files/blob/main/CHANGELOG.md) - [Commits](https://github.com/googleapis/nodejs-proto-files/compare/v2.5.2...v3.0.0) --- updated-dependencies: - dependency-name: google-proto-files dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps-dev): bump karma from 6.3.20 to 6.4.0 in /console (#3839) Bumps [karma](https://github.com/karma-runner/karma) from 6.3.20 to 6.4.0. - [Release notes](https://github.com/karma-runner/karma/releases) - [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md) - [Commits](https://github.com/karma-runner/karma/compare/v6.3.20...v6.4.0) --- updated-dependencies: - dependency-name: karma dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * jasmine * packs * lock * html tags * base / Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Livio Spring --- console/angular.json | 34 +- console/package-lock.json | 11242 ++++++++++++++++++++++++++---------- console/package.json | 56 +- console/src/index.html | 27 +- 4 files changed, 8333 insertions(+), 3026 deletions(-) diff --git a/console/angular.json b/console/angular.json index cf1e105dfb4..aae5fe23cb8 100644 --- a/console/angular.json +++ b/console/angular.json @@ -22,9 +22,17 @@ "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", - "assets": ["src/favicon.ico", "src/assets", "src/manifest.webmanifest"], - "styles": ["src/styles.scss"], - "scripts": ["./node_modules/tinycolor2/dist/tinycolor-min.js"], + "assets": [ + "src/favicon.ico", + "src/assets", + "src/manifest.webmanifest" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [ + "./node_modules/tinycolor2/dist/tinycolor-min.js" + ], "allowedCommonJsDependencies": [ "@angular/common/locales/de", "codemirror/mode/javascript/javascript", @@ -122,15 +130,27 @@ "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", - "assets": ["src/favicon.ico", "src/assets", "src/manifest.webmanifest"], - "styles": ["./node_modules/@angular/material/prebuilt-themes/pink-bluegrey.css", "src/styles.scss"], - "scripts": ["./node_modules/tinycolor2/dist/tinycolor-min.js"] + "assets": [ + "src/favicon.ico", + "src/assets", + "src/manifest.webmanifest" + ], + "styles": [ + "./node_modules/@angular/material/prebuilt-themes/pink-bluegrey.css", + "src/styles.scss" + ], + "scripts": [ + "./node_modules/tinycolor2/dist/tinycolor-min.js" + ] } }, "lint": { "builder": "@angular-eslint/builder:lint", "options": { - "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"] + "lintFilePatterns": [ + "src/**/*.ts", + "src/**/*.html" + ] } }, "e2e": { diff --git a/console/package-lock.json b/console/package-lock.json index b8a5cfb7a26..72a20673eda 100644 --- a/console/package-lock.json +++ b/console/package-lock.json @@ -8,18 +8,18 @@ "name": "console", "version": "0.0.0", "dependencies": { - "@angular/animations": "^14.0.1", - "@angular/cdk": "^14.0.1", - "@angular/common": "^14.0.1", - "@angular/compiler": "^14.0.1", - "@angular/core": "^14.0.1", - "@angular/forms": "^14.0.1", - "@angular/material": "^14.0.1", - "@angular/material-moment-adapter": "^14.0.1", - "@angular/platform-browser": "^14.0.1", - "@angular/platform-browser-dynamic": "^14.0.1", - "@angular/router": "^14.0.1", - "@angular/service-worker": "^14.0.1", + "@angular/animations": "^14.0.4", + "@angular/cdk": "^14.0.4", + "@angular/common": "^14.0.4", + "@angular/compiler": "^14.0.4", + "@angular/core": "^14.0.4", + "@angular/forms": "^14.0.4", + "@angular/material": "^14.0.4", + "@angular/material-moment-adapter": "^14.0.4", + "@angular/platform-browser": "^14.0.4", + "@angular/platform-browser-dynamic": "^14.0.4", + "@angular/router": "^14.0.4", + "@angular/service-worker": "^14.0.4", "@ctrl/ngx-codemirror": "^5.1.1", "@grpc/grpc-js": "^1.5.7", "@ngx-translate/core": "^14.0.0", @@ -32,7 +32,7 @@ "codemirror": "^5.65.0", "cors": "^2.8.5", "file-saver": "^2.0.5", - "google-proto-files": "^2.5.0", + "google-proto-files": "^3.0.0", "google-protobuf": "^3.19.4", "grpc-web": "^1.3.0", "libphonenumber-js": "^1.10.6", @@ -48,32 +48,32 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^14.0.1", - "@angular-eslint/builder": "^14.0.0-alpha.3", - "@angular-eslint/eslint-plugin": "^14.0.0-alpha.3", - "@angular-eslint/eslint-plugin-template": "^14.0.0-alpha.3", - "@angular-eslint/schematics": "^14.0.0-alpha.3", - "@angular-eslint/template-parser": "^14.0.0-alpha.3", - "@angular/cli": "^14.0.1", - "@angular/compiler-cli": "^14.0.1", - "@angular/language-service": "^14.0.1", + "@angular-devkit/build-angular": "^14.0.4", + "@angular-eslint/builder": "^14.0.0", + "@angular-eslint/eslint-plugin": "^14.0.0", + "@angular-eslint/eslint-plugin-template": "^14.0.0", + "@angular-eslint/schematics": "^14.0.0", + "@angular-eslint/template-parser": "^14.0.0", + "@angular/cli": "^14.0.4", + "@angular/compiler-cli": "^14.0.4", + "@angular/language-service": "^14.0.4", "@types/jasmine": "~4.0.3", "@types/jasminewd2": "~2.0.10", "@types/jsonwebtoken": "^8.5.5", "@types/node": "^17.0.42", - "@typescript-eslint/eslint-plugin": "5.25.0", - "@typescript-eslint/parser": "5.27.0", + "@typescript-eslint/eslint-plugin": "5.30.4", + "@typescript-eslint/parser": "5.30.4", "codelyzer": "^6.0.0", "cypress": "^10.1.0", "cypress-terminal-report": "^4.0.1", - "eslint": "^8.17.0", - "jasmine-core": "~4.1.1", + "eslint": "^8.18.0", + "jasmine-core": "~4.2.0", "jasmine-spec-reporter": "~7.0.0", "jsonwebtoken": "^8.5.1", - "karma": "~6.3.16", + "karma": "~6.4.0", "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "~3.0.2", - "karma-jasmine": "~5.0.1", + "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "^2.0.0", "mochawesome": "^7.1.2", "prettier": "^2.4.1", @@ -86,8 +86,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -97,11 +98,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1400.2", + "version": "0.1400.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.4.tgz", + "integrity": "sha512-9tjOIRpAPuhsJ5xMVZI/C9qQUaVTF9URFrK4r/b9RO7lRsvMvweReMcOH4/8+veVSTAzAa34B6WNYvvuBZFMOg==", "dev": true, - "license": "MIT", "dependencies": { - "@angular-devkit/core": "14.0.2", + "@angular-devkit/core": "14.0.4", "rxjs": "6.6.7" }, "engines": { @@ -112,8 +114,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -123,18 +126,20 @@ }, "node_modules/@angular-devkit/architect/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "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.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.0.4.tgz", + "integrity": "sha512-VoiDfyKSTBU4LDRwtY8Ga5ZBKsDxTYWNx9aDCoswalMvYREwhEi9+wEcWjF5aMKl4usr6twCPaYqDrbkHYUHqw==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1400.2", - "@angular-devkit/build-webpack": "0.1400.2", - "@angular-devkit/core": "14.0.2", + "@angular-devkit/architect": "0.1400.4", + "@angular-devkit/build-webpack": "0.1400.4", + "@angular-devkit/core": "14.0.4", "@babel/core": "7.17.10", "@babel/generator": "7.17.10", "@babel/helper-annotate-as-pure": "7.16.7", @@ -145,7 +150,7 @@ "@babel/runtime": "7.17.9", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.0.2", + "@ngtools/webpack": "14.0.4", "ansi-colors": "4.1.1", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -235,8 +240,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -246,15 +252,17 @@ }, "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1400.2", + "version": "0.1400.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1400.4.tgz", + "integrity": "sha512-eknabzf8lWDidOzeoV7NG3Rrfme/O2REZtranhBGKRfoRNUOCWMYcCfAF1hUEHjgw7zd4pn+3EdMVjhwpG48hA==", "dev": true, - "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1400.2", + "@angular-devkit/architect": "0.1400.4", "rxjs": "6.6.7" }, "engines": { @@ -269,8 +277,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -280,13 +289,15 @@ }, "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "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.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.4.tgz", + "integrity": "sha512-ySQnhu9KhU6vMcFE5jFD93Q2aQ/UJYRZXlvDCve11pp6Lb+llcA7H46lHlBwpxR3jKom+8U4W5vnviqU52zhcg==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "8.11.0", "ajv-formats": "2.1.1", @@ -310,8 +321,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -321,15 +333,17 @@ }, "node_modules/@angular-devkit/core/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "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.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.4.tgz", + "integrity": "sha512-dOi843eANcCL/tcSIAaotfLTHZTQLzRrpP2hz/le/vYMcuIfP90auvsWbQVrWbDIxWYl57Lu2UxvITT9gIarnA==", "dev": true, - "license": "MIT", "dependencies": { - "@angular-devkit/core": "14.0.2", + "@angular-devkit/core": "14.0.4", "jsonc-parser": "3.0.0", "magic-string": "0.26.1", "ora": "5.4.1", @@ -343,8 +357,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -354,13 +369,14 @@ }, "node_modules/@angular-devkit/schematics/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@angular-eslint/builder": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.0-alpha.3.tgz", - "integrity": "sha512-J3/Pj0erEkmRCSpVcsTWIg4riIADkfbC+Z+iGeS0cN3Ix6pyXk6XPDXoUCHBB0C55RCpeCYuJIFqJuLfEKIfZw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.0.tgz", + "integrity": "sha512-91/ZHivDD8ou/vEUsgY3nRv//2Kd0PA+JypI4jVs7nErmFtMkPAbpONn2cIqFlRgPilEm3LA78wemr7HxyxacA==", "dev": true, "dependencies": { "@nrwl/devkit": "13.1.3" @@ -371,18 +387,19 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "14.0.0-alpha.3", - "dev": true, - "license": "MIT" + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.0.0.tgz", + "integrity": "sha512-/rzDy+rVfpVOSAVycYsD15xbDrU54aayI94OT9Rxxl9J4Jp/Hep2FY7JrjvfqpS097qVIgJltEP9xu9OopOz7g==", + "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.0-alpha.3.tgz", - "integrity": "sha512-vGKiKoWTZITcj6VMdfEhRpQOgzYX53QXqEfqq1deEybNxJsmSHD5i7niLw6l3AgK8o18j2HZfMyz39MItiQ/Rg==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.0.tgz", + "integrity": "sha512-A4oCWgOwiP9aYuuMOyF1iLcjZONMjxuabG+FICLA7LosjIIgIf0Cktp74Ii4itBr2Ka+E5+sCvFBce8r2Cmosg==", "dev": true, "dependencies": { - "@angular-eslint/utils": "14.0.0-alpha.3", - "@typescript-eslint/experimental-utils": "5.27.1" + "@angular-eslint/utils": "14.0.0", + "@typescript-eslint/utils": "5.29.0" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0", @@ -390,13 +407,13 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.0-alpha.3.tgz", - "integrity": "sha512-AoOyyLOpRZPph35wwBI1BOmBaI5VIBOdxWmOlCZsP2H5iaBiF+wQTARUu8swQVLKZ2arKKSP0ufAfc5E2FBcZA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.0.tgz", + "integrity": "sha512-h+3eL2ovMiBn5EG0DH8/2ikolvUUjSGJFbZenlJwEPGGEHaJoYw6205ZMoRNxKResEbPgEoY1UK+paO8x14z6w==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", - "@typescript-eslint/experimental-utils": "5.27.1", + "@angular-eslint/bundled-angular-compiler": "14.0.0", + "@typescript-eslint/utils": "5.29.0", "aria-query": "5.0.0", "axobject-query": "3.0.1" }, @@ -406,13 +423,13 @@ } }, "node_modules/@angular-eslint/schematics": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.0-alpha.3.tgz", - "integrity": "sha512-swBkQ4/9itzEPTvPbBw1H02pMrZIPly5d6fPUh71+xhPTTBvjFm525AyVMhg6N6uk9ai3mDgWyek8eaz7NHZgA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.0.tgz", + "integrity": "sha512-4lOpDECUgcSdlBsMeIq9Sx0FkIZDQZPfmtwNHDl7P7GCA4voqS3GgSX7/azwYrXFchPteQeHrXxB4B8n8AByig==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "14.0.0-alpha.3", - "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.3", + "@angular-eslint/eslint-plugin": "14.0.0", + "@angular-eslint/eslint-plugin-template": "14.0.0", "ignore": "5.2.0", "strip-json-comments": "3.1.1", "tmp": "0.2.1" @@ -422,12 +439,12 @@ } }, "node_modules/@angular-eslint/template-parser": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.0-alpha.3.tgz", - "integrity": "sha512-twCZoBFuAgSZK6lKiNRdD738f99OSaQEaykf03QJAjo501Ib/q85cP2D7ZQzk03nT+xSODqUEaEPnuu/kE59nQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.0.tgz", + "integrity": "sha512-i0ec0m0hezabVYH9MruxIxLyoQp60VQAy0QvsQlYB6q3nFuJnx9MT+iSN+Now8AhWh2yqbnCxxnhhLFushwBFQ==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", + "@angular-eslint/bundled-angular-compiler": "14.0.0", "eslint-scope": "^5.1.0" }, "peerDependencies": { @@ -436,13 +453,13 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.0-alpha.3.tgz", - "integrity": "sha512-py2oFSDdiY/QJmBKg0wbbO4Caf18uioHAivMXdXfIyFHM6XGoiI1DBUUCmNrCq6sbYanD1oO0BtRFD+Gv6y+vg==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.0.tgz", + "integrity": "sha512-gK8gDzo2MbMXYDqsWqE28rGkqPMMhPG4mIWp+zMsuWYG7oiUlD2TibWerYQCfGa9K2FTF97UGmI21Ckqsgex7w==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", - "@typescript-eslint/experimental-utils": "5.27.1" + "@angular-eslint/bundled-angular-compiler": "14.0.0", + "@typescript-eslint/utils": "5.29.0" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0", @@ -450,8 +467,9 @@ } }, "node_modules/@angular/animations": { - "version": "14.0.2", - "license": "MIT", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.0.4.tgz", + "integrity": "sha512-+Qe+wLA0DOHlOdFRQSEJoenhFm5zcKwkDItqAFT5NVYOT04yxXq8NFRIHSbqn468qR70EkX514lKi6pr6nxGYQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -459,12 +477,13 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.0.2" + "@angular/core": "14.0.4" } }, "node_modules/@angular/cdk": { - "version": "14.0.2", - "license": "MIT", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.0.4.tgz", + "integrity": "sha512-zPM4VZadoKzTF9TZ7Yx5gJ7GtQpt62f8ofdH/BF2atG+TaNzOEFqtzogP4WuJDFAxJXOPMePobhth4YjUk0Wbw==", "dependencies": { "tslib": "^2.3.0" }, @@ -478,14 +497,15 @@ } }, "node_modules/@angular/cli": { - "version": "14.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.4.tgz", + "integrity": "sha512-hb6mJk6/vJwHCuMaGResQh9aXgoSyfrJ/WuFgLcPspdFRkm4EQcTSx8DwrRo7YawuCa12UJdPoK0dASXYN6JHA==", "dev": true, - "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1400.2", - "@angular-devkit/core": "14.0.2", - "@angular-devkit/schematics": "14.0.2", - "@schematics/angular": "14.0.2", + "@angular-devkit/architect": "0.1400.4", + "@angular-devkit/core": "14.0.4", + "@angular-devkit/schematics": "14.0.4", + "@schematics/angular": "14.0.4", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.4", @@ -513,8 +533,9 @@ } }, "node_modules/@angular/common": { - "version": "14.0.2", - "license": "MIT", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.0.4.tgz", + "integrity": "sha512-CvlFa2lCxen0LB3N45IzZDdMIqpcasXfVUhiAkLxZgT+kSTunc/rg8hMoLHVfmFpkQKCQmPVyuzNXnSwIFhYkQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -522,13 +543,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.0.2", + "@angular/core": "14.0.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "14.0.2", - "license": "MIT", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.0.4.tgz", + "integrity": "sha512-WdRpZFTX2vt71sSfQ89C1K5l2zhYtn8ON+ZlAVxyZ5uT0nA/Z/vuMLfNZB1WmcGVDOc7JmQduSiSaI0hhQqXqw==", "dependencies": { "tslib": "^2.3.0" }, @@ -536,7 +558,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.0.2" + "@angular/core": "14.0.4" }, "peerDependenciesMeta": { "@angular/core": { @@ -545,9 +567,10 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "14.0.2", + "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, - "license": "MIT", "dependencies": { "@babel/core": "^7.17.2", "chokidar": "^3.0.0", @@ -569,13 +592,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.0.2", + "@angular/compiler": "14.0.4", "typescript": ">=4.6.2 <4.8" } }, "node_modules/@angular/core": { - "version": "14.0.2", - "license": "MIT", + "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==", "dependencies": { "tslib": "^2.3.0" }, @@ -588,8 +612,9 @@ } }, "node_modules/@angular/forms": { - "version": "14.0.2", - "license": "MIT", + "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==", "dependencies": { "tslib": "^2.3.0" }, @@ -597,29 +622,31 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.0.2", - "@angular/core": "14.0.2", - "@angular/platform-browser": "14.0.2", + "@angular/common": "14.0.4", + "@angular/core": "14.0.4", + "@angular/platform-browser": "14.0.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "14.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.0.4.tgz", + "integrity": "sha512-5I2k1/EJSBBA3D5jP8Q+Z9paI62t7UUi3NO3o1nJkc9d6/01FGKgilbouSNhdLI6Rn0FeBOwF2h00H9NQ+XHTw==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || >=16.10.0" } }, "node_modules/@angular/material": { - "version": "14.0.2", - "license": "MIT", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.4.tgz", + "integrity": "sha512-Ysz6oPbpLH7CvRR6oxQwpUImSbFqxL4+eiH0LPc7vkaOSrvGdZ/7cWhAfT6hVnw3bEY+eq5qBSMgyVUB44z4eg==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^14.0.0 || ^15.0.0", - "@angular/cdk": "14.0.2", + "@angular/cdk": "14.0.4", "@angular/common": "^14.0.0 || ^15.0.0", "@angular/core": "^14.0.0 || ^15.0.0", "@angular/forms": "^14.0.0 || ^15.0.0", @@ -628,20 +655,22 @@ } }, "node_modules/@angular/material-moment-adapter": { - "version": "14.0.2", - "license": "MIT", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-14.0.4.tgz", + "integrity": "sha512-RqBtLKzwqO2fRAlwURVfVSXZQ3Qks1k3G5lj4AOZpGnAPBw8DGHI/zroBD/3QzPer8rUsoiVVwdQSXpmWf1mlg==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/core": "^14.0.0 || ^15.0.0", - "@angular/material": "14.0.2", + "@angular/material": "14.0.4", "moment": "^2.18.1" } }, "node_modules/@angular/platform-browser": { - "version": "14.0.2", - "license": "MIT", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.0.4.tgz", + "integrity": "sha512-VFeFpQ+248m8GiCqcsHwH4PET7tR1cyXnhsep1EeI4MDaO+aIbsUcESqXzMm5+ChOmNyiCtLQu8QvfHZK0uDVA==", "dependencies": { "tslib": "^2.3.0" }, @@ -649,9 +678,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "14.0.2", - "@angular/common": "14.0.2", - "@angular/core": "14.0.2" + "@angular/animations": "14.0.4", + "@angular/common": "14.0.4", + "@angular/core": "14.0.4" }, "peerDependenciesMeta": { "@angular/animations": { @@ -660,8 +689,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "14.0.2", - "license": "MIT", + "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==", "dependencies": { "tslib": "^2.3.0" }, @@ -669,15 +699,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.0.2", - "@angular/compiler": "14.0.2", - "@angular/core": "14.0.2", - "@angular/platform-browser": "14.0.2" + "@angular/common": "14.0.4", + "@angular/compiler": "14.0.4", + "@angular/core": "14.0.4", + "@angular/platform-browser": "14.0.4" } }, "node_modules/@angular/router": { - "version": "14.0.2", - "license": "MIT", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.4.tgz", + "integrity": "sha512-aqtOjIjVNtWbpedDdni0yGfGR6sEb8S3jJB9jf43ththmHKxAlW7PKP2NgEmx0uJ2xY2iGET7Gkpl8RBwvoHgQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -685,15 +716,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.0.2", - "@angular/core": "14.0.2", - "@angular/platform-browser": "14.0.2", + "@angular/common": "14.0.4", + "@angular/core": "14.0.4", + "@angular/platform-browser": "14.0.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/service-worker": { - "version": "14.0.2", - "license": "MIT", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-14.0.4.tgz", + "integrity": "sha512-dJzsDTQg6LRNK/wJPi06EdfKCSnvil3DD6HNHDMHNxLE4J5NQmZdd6bCBEkXTOchqpOUjae4ej/ZelEE0te3Bg==", "dependencies": { "tslib": "^2.3.0" }, @@ -704,38 +736,42 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.0.2", - "@angular/core": "14.0.2" + "@angular/common": "14.0.4", + "@angular/core": "14.0.4" } }, "node_modules/@assemblyscript/loader": { "version": "0.10.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.18.5", + "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, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@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, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", @@ -763,16 +799,18 @@ }, "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, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@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, - "license": "MIT", "dependencies": { "@babel/types": "^7.17.10", "@jridgewell/gen-mapping": "^0.1.0", @@ -784,8 +822,9 @@ }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -794,24 +833,26 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", + "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.2", + "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, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", + "@babel/compat-data": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" }, @@ -824,24 +865,26 @@ }, "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, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", + "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -850,13 +893,26 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.12", + "node_modules/@babel/helper-create-class-features-plugin/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, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" }, "engines": { "node": ">=6.9.0" @@ -865,10 +921,23 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/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-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, - "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", @@ -885,223 +954,315 @@ }, "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, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.2", + "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, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.17.9", + "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, - "license": "MIT", "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.17.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", + "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.0", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" + "@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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", + "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", + "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-wrap-function": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator/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-replace-supers": { - "version": "7.18.2", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", + "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.18.2", + "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, - "license": "MIT", "dependencies": { - "@babel/types": "^7.18.2" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", + "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", + "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, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", + "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, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", + "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-function-name": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.18.2", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", + "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -1110,9 +1271,10 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.5", + "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, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -1121,11 +1283,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.17.12", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1135,13 +1298,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", + "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1152,8 +1316,9 @@ }, "node_modules/@babel/plugin-proposal-async-generator-functions": { "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-remap-async-to-generator": "^7.16.8", @@ -1167,12 +1332,13 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.17.12", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1182,12 +1348,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.0", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", + "@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": { @@ -1198,11 +1365,12 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1213,11 +1381,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", + "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1228,11 +1397,12 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.17.12", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1243,11 +1413,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", + "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1258,11 +1429,12 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.17.12", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1273,11 +1445,12 @@ } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1288,15 +1461,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", + "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/compat-data": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.17.12" + "@babel/plugin-transform-parameters": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1306,11 +1480,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1321,12 +1496,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", + "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1337,12 +1513,13 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.17.12", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1352,13 +1529,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.17.12", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12", + "@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": { @@ -1368,13 +1546,26 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.17.12", + "node_modules/@babel/plugin-proposal-private-property-in-object/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, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.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" @@ -1385,8 +1576,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1396,8 +1588,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1407,8 +1600,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1421,8 +1615,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1432,8 +1627,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1443,8 +1639,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1454,8 +1651,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1465,8 +1663,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1476,8 +1675,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1487,8 +1687,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1498,8 +1699,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1509,8 +1711,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1520,8 +1723,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1534,8 +1738,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1547,11 +1752,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.17.12", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1562,8 +1768,9 @@ }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -1577,11 +1784,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1591,11 +1799,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.4", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", + "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1605,17 +1814,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.4", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", + "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.18.2", - "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, "engines": { @@ -1625,12 +1835,25 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.17.12", + "node_modules/@babel/plugin-transform-classes/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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", + "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1640,11 +1863,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", + "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1654,12 +1878,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1669,11 +1894,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", + "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1683,12 +1909,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1698,11 +1925,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.1", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", + "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1712,13 +1940,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", + "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1728,11 +1957,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", + "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1742,11 +1972,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1756,12 +1987,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.0", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1772,13 +2004,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.2", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-simple-access": "^7.18.2", + "@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" }, "engines": { @@ -1789,14 +2022,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.5", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", + "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1807,12 +2041,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.0", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1822,12 +2057,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.17.12", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1837,11 +2073,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.5", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1851,12 +2088,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1866,11 +2104,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", + "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1880,11 +2119,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1894,11 +2134,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.0", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "regenerator-transform": "^0.15.0" }, "engines": { @@ -1909,11 +2150,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.17.12", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1924,8 +2166,9 @@ }, "node_modules/@babel/plugin-transform-runtime": { "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz", + "integrity": "sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -1943,18 +2186,20 @@ }, "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, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1964,12 +2209,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", + "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1979,11 +2225,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1993,11 +2240,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.2", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", + "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2007,11 +2255,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", + "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2021,11 +2270,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2035,12 +2285,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2051,8 +2302,9 @@ }, "node_modules/@babel/preset-env": { "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.17.10.tgz", + "integrity": "sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.17.10", "@babel/helper-compilation-targets": "^7.17.10", @@ -2138,16 +2390,18 @@ }, "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, - "license": "ISC", "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -2161,8 +2415,9 @@ }, "node_modules/@babel/runtime": { "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "dev": true, - "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -2172,8 +2427,9 @@ }, "node_modules/@babel/template": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", @@ -2184,18 +2440,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.5", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", + "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.5", - "@babel/types": "^7.18.4", + "@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" }, @@ -2204,12 +2461,13 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.18.2", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", + "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.18.2", - "@jridgewell/gen-mapping": "^0.3.0", + "@babel/types": "^7.18.7", + "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, "engines": { @@ -2217,11 +2475,12 @@ } }, "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.1", + "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, - "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.0", + "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.9" }, @@ -2230,11 +2489,12 @@ } }, "node_modules/@babel/types": { - "version": "7.18.4", + "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, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2243,16 +2503,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=0.1.90" } }, "node_modules/@csstools/postcss-color-function": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.0.tgz", + "integrity": "sha512-5D5ND/mZWcQoSfYnSPsXtuiFxhzmhxt6pcjrFLJyldj+p0ZN2vvRpYNX+lahFTtMhAYOa2WmkdGINr0yP0CvGA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2270,8 +2532,9 @@ }, "node_modules/@csstools/postcss-font-format-keywords": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz", + "integrity": "sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2284,8 +2547,9 @@ }, "node_modules/@csstools/postcss-hwb-function": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.1.tgz", + "integrity": "sha512-AMZwWyHbbNLBsDADWmoXT9A5yl5dsGEBeJSJRUJt8Y9n8Ziu7Wstt4MC8jtPW7xjcLecyfJwtnUTNSmOzcnWeg==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2302,8 +2566,9 @@ }, "node_modules/@csstools/postcss-ic-unit": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz", + "integrity": "sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2316,9 +2581,10 @@ } }, "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "2.0.5", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.6.tgz", + "integrity": "sha512-Oqs396oenuyyMdRXOstxXbxei8fYEgToYjmlYHEi5gk0QLk7xQ72LY7NDr7waWAAmdVzRqPpbE26Q7/cUrGu4Q==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -2331,13 +2597,14 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/@csstools/postcss-normalize-display-values": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz", + "integrity": "sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2350,8 +2617,9 @@ }, "node_modules/@csstools/postcss-oklab-function": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.0.tgz", + "integrity": "sha512-e/Q5HopQzmnQgqimG9v3w2IG4VRABsBq3itOcn4bnm+j4enTgQZ0nWsaH/m9GV2otWGQ0nwccYL5vmLKyvP1ww==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2369,8 +2637,9 @@ }, "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, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2383,8 +2652,9 @@ }, "node_modules/@csstools/postcss-stepped-value-functions": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.0.tgz", + "integrity": "sha512-q8c4bs1GumAiRenmFjASBcWSLKrbzHzWl6C2HcaAxAXIiL2rUlUWbqQZUjwVG5tied0rld19j/Mm90K3qI26vw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2401,8 +2671,9 @@ }, "node_modules/@csstools/postcss-unset-value": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.1.tgz", + "integrity": "sha512-f1G1WGDXEU/RN1TWAxBPQgQudtLnLQPyiWdtypkPC+mVYNKFKH/HYXSxH4MVNqwF8M0eDsoiU7HumJHCg/L/jg==", "dev": true, - "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -2416,8 +2687,9 @@ }, "node_modules/@csstools/selector-specificity": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz", + "integrity": "sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==", "dev": true, - "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -2432,7 +2704,8 @@ }, "node_modules/@ctrl/ngx-codemirror": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@ctrl/ngx-codemirror/-/ngx-codemirror-5.1.1.tgz", + "integrity": "sha512-MAByA/cJBZY3yv/cpO87mF9Q24/ptCWf2Pr4n4V1w3G0ya5cKAIyHwIfvJ5nJz/4Gj2i2O/pteDWkyxrbyICoA==", "dependencies": { "@types/codemirror": "^5.60.5", "tslib": "^2.3.0" @@ -2445,15 +2718,17 @@ }, "node_modules/@ctrl/tinycolor": { "version": "3.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", "engines": { "node": ">=10" } }, "node_modules/@cypress/request": { "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2480,8 +2755,9 @@ }, "node_modules/@cypress/xvfb": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" @@ -2489,24 +2765,27 @@ }, "node_modules/@cypress/xvfb/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "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, - "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2524,8 +2803,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2539,22 +2819,25 @@ }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/@eslint/eslintrc/node_modules/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.15.0", + "version": "13.16.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", + "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -2567,8 +2850,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -2578,13 +2862,15 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2594,8 +2880,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2605,12 +2892,14 @@ }, "node_modules/@gar/promisify": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true }, "node_modules/@grpc/grpc-js": { "version": "1.6.7", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.7.tgz", + "integrity": "sha512-eBM03pu9hd3VqDQG+kHahiG1x80RGkkqqRb1Pchcwqej/KkAH95gAvKs6laqaHCycYaPK+TKuNQnOz9UXYA8qw==", "dependencies": { "@grpc/proto-loader": "^0.6.4", "@types/node": ">=12.12.47" @@ -2621,7 +2910,8 @@ }, "node_modules/@grpc/proto-loader": { "version": "0.6.13", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", + "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", "dependencies": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", @@ -2638,7 +2928,8 @@ }, "node_modules/@grpc/proto-loader/node_modules/yargs": { "version": "16.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -2654,15 +2945,17 @@ }, "node_modules/@grpc/proto-loader/node_modules/yargs-parser": { "version": "20.2.9", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "engines": { "node": ">=10" } }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -2674,8 +2967,9 @@ }, "node_modules/@humanwhocodes/config-array/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2683,8 +2977,9 @@ }, "node_modules/@humanwhocodes/config-array/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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2694,13 +2989,15 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2714,16 +3011,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -2733,30 +3032,34 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.7", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz", + "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.1", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "dev": true, - "license": "MIT" + "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.13", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -2764,13 +3067,15 @@ }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true }, "node_modules/@ngtools/webpack": { - "version": "14.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.0.4.tgz", + "integrity": "sha512-83b/gB4Kna2FhIQj82RNZol+6gq+vLv6+4LUFOGSBb4Xha3RVQGJQpGwqEkXRFziwgTODrPWJAnOup5pzKv9wA==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || >=16.10.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -2784,7 +3089,8 @@ }, "node_modules/@ngx-translate/core": { "version": "14.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-14.0.0.tgz", + "integrity": "sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w==", "dependencies": { "tslib": "^2.3.0" }, @@ -2795,7 +3101,8 @@ }, "node_modules/@ngx-translate/http-loader": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-7.0.0.tgz", + "integrity": "sha512-j+NpXXlcGVdyUNyY/qsJrqqeAdJdizCd+GKh3usXExSqy1aE9866jlAIL+xrfDU4w+LiMoma5pgE4emvFebZmA==", "dependencies": { "tslib": "^2.3.0" }, @@ -2807,8 +3114,9 @@ }, "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, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2819,16 +3127,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2839,8 +3149,9 @@ }, "node_modules/@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, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -2851,8 +3162,9 @@ }, "node_modules/@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, - "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^3.0.0", "lru-cache": "^7.4.4", @@ -2870,8 +3182,9 @@ }, "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, - "license": "ISC", "dependencies": { "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" @@ -2885,8 +3198,9 @@ }, "node_modules/@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, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -2897,16 +3211,18 @@ }, "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, - "license": "ISC", "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, - "license": "ISC", "dependencies": { "infer-owner": "^1.0.4" }, @@ -2916,8 +3232,9 @@ }, "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, - "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^2.0.0", "@npmcli/promise-spawn": "^3.0.0", @@ -2929,19 +3246,21 @@ } }, "node_modules/@nrwl/cli": { - "version": "14.3.6", + "version": "14.4.1", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.1.tgz", + "integrity": "sha512-9MHzXneygo1+hYgmBxrxe4L702OikuhcCzbUJ1W0JuvcEk/tbotn/EG/jaJqBzPyCQz1cZYYlJuN7sxg8bdtNw==", "dev": true, - "license": "MIT", "dependencies": { - "nx": "14.3.6" + "nx": "14.4.1" } }, "node_modules/@nrwl/cli/node_modules/@nrwl/tao": { - "version": "14.3.6", + "version": "14.4.1", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.1.tgz", + "integrity": "sha512-BLao0kpWFkP38V3Fli2cYmM3Vbjkfu01EKrKULIukPh7VlT8nX0vgUND7LcPg46d+HTlaQG12SGLqiMroB+qwQ==", "dev": true, - "license": "MIT", "dependencies": { - "nx": "14.3.6" + "nx": "14.4.1" }, "bin": { "tao": "index.js" @@ -2949,8 +3268,9 @@ }, "node_modules/@nrwl/cli/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2963,13 +3283,15 @@ }, "node_modules/@nrwl/cli/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/@nrwl/cli/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2977,8 +3299,9 @@ }, "node_modules/@nrwl/cli/node_modules/chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2992,8 +3315,9 @@ }, "node_modules/@nrwl/cli/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3003,13 +3327,15 @@ }, "node_modules/@nrwl/cli/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/@nrwl/cli/node_modules/fast-glob": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3023,8 +3349,9 @@ }, "node_modules/@nrwl/cli/node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3036,8 +3363,9 @@ }, "node_modules/@nrwl/cli/node_modules/glob": { "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3052,16 +3380,18 @@ }, "node_modules/@nrwl/cli/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@nrwl/cli/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3071,8 +3401,9 @@ }, "node_modules/@nrwl/cli/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, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3082,8 +3413,9 @@ }, "node_modules/@nrwl/cli/node_modules/minimatch": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3092,13 +3424,14 @@ } }, "node_modules/@nrwl/cli/node_modules/nx": { - "version": "14.3.6", + "version": "14.4.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.1.tgz", + "integrity": "sha512-nXWrvtAe1Lp4IqqrjjhEQ0S3LmrlVLb9vjKkhSeirLOFnECWhf905hR0iQe8p+JDRrlD0zSjo2YiAAF1c6SarQ==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { - "@nrwl/cli": "14.3.6", - "@nrwl/tao": "14.3.6", + "@nrwl/cli": "14.4.1", + "@nrwl/tao": "14.4.1", "@parcel/watcher": "2.0.4", "chalk": "4.1.0", "chokidar": "^3.5.1", @@ -3146,8 +3479,9 @@ }, "node_modules/@nrwl/cli/node_modules/semver": { "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3160,8 +3494,9 @@ }, "node_modules/@nrwl/cli/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3171,16 +3506,18 @@ }, "node_modules/@nrwl/cli/node_modules/yargs-parser": { "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/@nrwl/devkit": { "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-13.1.3.tgz", + "integrity": "sha512-TAAsZJvVc/obeH0rZKY6miVhyM2GHGb8qIWp9MAIdLlXf4VDcNC7rxwb5OrGVSwuTTjqGYBGPUx0yEogOOJthA==", "dev": true, - "license": "MIT", "dependencies": { "@nrwl/tao": "13.1.3", "ejs": "^3.1.5", @@ -3192,8 +3529,9 @@ }, "node_modules/@nrwl/devkit/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, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3203,8 +3541,9 @@ }, "node_modules/@nrwl/devkit/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, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -3214,13 +3553,15 @@ }, "node_modules/@nrwl/devkit/node_modules/rxjs/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@nrwl/devkit/node_modules/semver": { "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3233,8 +3574,9 @@ }, "node_modules/@nrwl/tao": { "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-13.1.3.tgz", + "integrity": "sha512-/IwJgSgCBD1SaF+n8RuXX2OxDAh8ut/+P8pMswjm8063ac30UlAHjQ4XTYyskLH8uoUmNi2hNaGgHUrkwt7tQA==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "4.1.0", "enquirer": "~2.3.6", @@ -3254,8 +3596,9 @@ }, "node_modules/@nrwl/tao/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3268,8 +3611,9 @@ }, "node_modules/@nrwl/tao/node_modules/chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3283,8 +3627,9 @@ }, "node_modules/@nrwl/tao/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3294,21 +3639,24 @@ }, "node_modules/@nrwl/tao/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/@nrwl/tao/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@nrwl/tao/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, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3318,8 +3666,9 @@ }, "node_modules/@nrwl/tao/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, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -3329,21 +3678,24 @@ }, "node_modules/@nrwl/tao/node_modules/rxjs-for-await": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/rxjs-for-await/-/rxjs-for-await-0.0.2.tgz", + "integrity": "sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw==", "dev": true, - "license": "MIT", "peerDependencies": { "rxjs": "^6.0.0" } }, "node_modules/@nrwl/tao/node_modules/rxjs/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@nrwl/tao/node_modules/semver": { "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3356,8 +3708,9 @@ }, "node_modules/@nrwl/tao/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3367,9 +3720,10 @@ }, "node_modules/@parcel/watcher": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "node-addon-api": "^3.2.1", "node-gyp-build": "^4.3.0" @@ -3384,23 +3738,28 @@ }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" }, "node_modules/@protobufjs/codegen": { "version": "2.0.4", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -3408,31 +3767,37 @@ }, "node_modules/@protobufjs/float": { "version": "1.0.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, "node_modules/@protobufjs/path": { "version": "1.1.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@schematics/angular": { - "version": "14.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.4.tgz", + "integrity": "sha512-2t7B8ZplJzLfrU7SjciaUquaOAWCi6SD954Q1Ej/SZfWlLjs8k1SvlKb+Syzo9TMByMuzdKTrdnmNRHekvMZEQ==", "dev": true, - "license": "MIT", "dependencies": { - "@angular-devkit/core": "14.0.2", - "@angular-devkit/schematics": "14.0.2", + "@angular-devkit/core": "14.0.4", + "@angular-devkit/schematics": "14.0.4", "jsonc-parser": "3.0.0" }, "engines": { @@ -3443,8 +3808,9 @@ }, "node_modules/@stylelint/postcss-css-in-js": { "version": "0.37.3", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz", + "integrity": "sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.17.9" }, @@ -3455,8 +3821,10 @@ }, "node_modules/@stylelint/postcss-markdown": { "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "deprecated": "Use the original unforked package instead: postcss-markdown", "dev": true, - "license": "MIT", "dependencies": { "remark": "^13.0.0", "unist-util-find-all-after": "^3.0.2" @@ -3468,16 +3836,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -3485,36 +3855,41 @@ }, "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, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/codemirror": { "version": "5.60.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz", + "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", "dependencies": { "@types/tern": "*" } }, "node_modules/@types/component-emitter": { "version": "1.2.11", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", + "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", + "dev": true }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -3522,40 +3897,46 @@ }, "node_modules/@types/cookie": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "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.3", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", + "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/eslint-scope": { - "version": "3.7.3", + "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, - "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "0.0.51", - "license": "MIT" + "version": "0.0.52", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.52.tgz", + "integrity": "sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ==" }, "node_modules/@types/express": { "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "dev": true, - "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.18", @@ -3565,8 +3946,9 @@ }, "node_modules/@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, - "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3575,124 +3957,146 @@ }, "node_modules/@types/file-saver": { "version": "2.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==" }, "node_modules/@types/google-protobuf": { "version": "3.15.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.6.tgz", + "integrity": "sha512-pYVNNJ+winC4aek+lZp93sIKxnXt5qMkuKmaqS3WGuTq0Bw1ZDYNBgzG5kkdtwcv+GmYJGo3yEg6z2cKKAiEdw==" }, "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, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/jasmine": { "version": "4.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", + "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", + "dev": true }, "node_modules/@types/jasminewd2": { "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz", + "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==", "dev": true, - "license": "MIT", "dependencies": { "@types/jasmine": "*" } }, "node_modules/@types/json-schema": { "version": "7.0.11", - "dev": true, - "license": "MIT" + "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/json5": { "version": "0.0.29", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, "node_modules/@types/jsonwebtoken": { "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz", + "integrity": "sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/long": { "version": "4.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "node_modules/@types/mdast": { "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", "dev": true, - "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/mime": { "version": "1.3.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true }, "node_modules/@types/minimist": { "version": "1.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true }, "node_modules/@types/node": { "version": "17.0.45", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true }, "node_modules/@types/parse-json": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true }, "node_modules/@types/q": { "version": "0.0.32", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==", + "dev": true }, "node_modules/@types/qs": { "version": "6.9.7", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true }, "node_modules/@types/selenium-webdriver": { "version": "3.0.20", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz", + "integrity": "sha512-6d8Q5fqS9DWOXEhMDiF6/2FjyHdmP/jSTAUyeQR7QwrFeNmYyzmvGxD5aLIHL445HjWgibs0eAig+KPnbaesXA==", + "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, - "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -3700,63 +4104,72 @@ }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true }, "node_modules/@types/sizzle": { "version": "2.3.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true }, "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, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/tern": { "version": "0.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", "dependencies": { "@types/estree": "*" } }, "node_modules/@types/unist": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true }, "node_modules/@types/uuid": { "version": "8.3.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" }, "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, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.25.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.4.tgz", + "integrity": "sha512-xjujQISAIa4HAaos8fcMZXmqkuZqMx6icdxkI88jMM/eNe4J8AuTLYnLK+zdm0mBYLyctdFf//UE4/xFCcQzYQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/type-utils": "5.25.0", - "@typescript-eslint/utils": "5.25.0", + "@typescript-eslint/scope-manager": "5.30.4", + "@typescript-eslint/type-utils": "5.30.4", + "@typescript-eslint/utils": "5.30.4", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -3781,87 +4194,16 @@ } } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.27.1", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.4.tgz", + "integrity": "sha512-a+GQrJzOUhn4WT1mUumXDyam+22Oo4c5K/jnZ+6r/4WTQF3q8e4CsC9PLHb4SnOClzOqo/5GLZWvkE1aa5UGKQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "5.27.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.27.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/visitor-keys": "5.27.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { - "version": "5.27.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.27.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/visitor-keys": "5.27.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": { - "version": "5.27.1", - "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.27.1", - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/typescript-estree": "5.27.1", + "@typescript-eslint/scope-manager": "5.30.4", + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/typescript-estree": "5.30.4", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -3876,30 +4218,15 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.27.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.27.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "5.27.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.4.tgz", + "integrity": "sha512-/ge1HtU63wVoED4VnlU2o+FPFmi017bPYpeSrCmd8Ycsti4VSxXrmcpXXm7JpI4GT0Aa7qviabv1PEp6L5bboQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "5.27.0", - "@typescript-eslint/types": "5.27.0", - "@typescript-eslint/typescript-estree": "5.27.0", + "@typescript-eslint/scope-manager": "5.30.4", + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/typescript-estree": "5.30.4", "debug": "^4.3.4" }, "engines": { @@ -3918,45 +4245,14 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "5.27.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.27.0", - "@typescript-eslint/visitor-keys": "5.27.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.27.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.27.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.25.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.4.tgz", + "integrity": "sha512-DNzlQwGSiGefz71JwaHrpcaAX3zYkEcy8uVuan3YMKOa6qeW/y+7SaD8KIsIAruASwq6P+U4BjWBWtM2O+mwBQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/visitor-keys": "5.25.0" + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/visitor-keys": "5.30.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3966,24 +4262,13 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { - "version": "5.25.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.25.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.4.tgz", + "integrity": "sha512-55cf1dZviwwv+unDB+mF8vZkfta5muTK6bppPvenWWCD7slZZ0DEsXUjZerqy7Rq8s3J4SXdg4rMIY8ngCtTmA==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "5.25.0", + "@typescript-eslint/utils": "5.30.4", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -4003,69 +4288,16 @@ } } }, - "node_modules/@typescript-eslint/types": { - "version": "5.27.0", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.4.tgz", + "integrity": "sha512-a+GQrJzOUhn4WT1mUumXDyam+22Oo4c5K/jnZ+6r/4WTQF3q8e4CsC9PLHb4SnOClzOqo/5GLZWvkE1aa5UGKQ==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.27.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.27.0", - "@typescript-eslint/visitor-keys": "5.27.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.27.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.27.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.25.0", - "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/typescript-estree": "5.25.0", + "@typescript-eslint/scope-manager": "5.30.4", + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/typescript-estree": "5.30.4", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -4080,10 +4312,11 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.25.0", + "node_modules/@typescript-eslint/types": { + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.4.tgz", + "integrity": "sha512-NTEvqc+Vvu8Q6JeAKryHk2eqLKqsr2St3xhIjhOjQv5wQUBhaTuix4WOSacqj0ONWfKVU12Eug3LEAB95GBkMA==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4092,13 +4325,14 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.25.0", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.4.tgz", + "integrity": "sha512-V4VnEs6/J9/nNizaA12IeU4SAeEYaiKr7XndLNfV5+3zZSB4hIu6EhHJixTKhvIqA+EEHgBl6re8pivBMLLO1w==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/visitor-keys": "5.25.0", + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/visitor-keys": "5.30.4", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4118,12 +4352,94 @@ } } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.25.0", + "node_modules/@typescript-eslint/utils": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", + "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.25.0", + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/typescript-estree": "5.29.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", + "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", + "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", + "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", + "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.29.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4134,10 +4450,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { - "version": "5.25.0", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.4.tgz", + "integrity": "sha512-ulKGse3mruSc8x6l8ORSc6+1ORyJzKmZeIaRTu/WpaF/jx3vHvEn5XZUKF9XaVg2710mFmTAUlLcLYLPp/Zf/Q==", "dev": true, - "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.30.4", + "eslint-visitor-keys": "^3.3.0" + }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4148,14 +4469,16 @@ }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -4163,23 +4486,27 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -4188,13 +4515,15 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -4204,29 +4533,33 @@ }, "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, - "license": "MIT", "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, - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -4240,8 +4573,9 @@ }, "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, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -4252,8 +4586,9 @@ }, "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, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -4263,8 +4598,9 @@ }, "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, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -4276,8 +4612,9 @@ }, "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, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -4285,33 +4622,39 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" + "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", - "dev": true, - "license": "Apache-2.0" + "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", - "dev": true, - "license": "BSD-2-Clause" + "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", - "dev": true, - "license": "BSD-3-Clause" + "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", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -4322,8 +4665,9 @@ }, "node_modules/acorn": { "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4333,24 +4677,27 @@ }, "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, - "license": "MIT", "peerDependencies": { "acorn": "^8" } }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/adjust-sourcemap-loader": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, - "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -4361,8 +4708,9 @@ }, "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -4374,16 +4722,18 @@ }, "node_modules/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, - "license": "MIT", "engines": { "node": ">=0.3.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, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -4393,8 +4743,9 @@ }, "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, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "depd": "^1.1.2", @@ -4406,16 +4757,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4426,8 +4779,9 @@ }, "node_modules/ajv": { "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -4441,8 +4795,9 @@ }, "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, - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -4457,8 +4812,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -4468,7 +4824,8 @@ }, "node_modules/angular-oauth2-oidc": { "version": "13.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/angular-oauth2-oidc/-/angular-oauth2-oidc-13.0.1.tgz", + "integrity": "sha512-aL1VIv9Jqoqq31lbpUXIeNpM3GeN/ldb3KOlq0cV92amGpZs9J4YA+2rlJ5V9zb6NFNbvd7XfTntMbnNuS0+CQ==", "dependencies": { "fast-sha256": "^1.3.0", "tslib": "^2.0.0" @@ -4480,16 +4837,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -4502,26 +4861,29 @@ }, "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" ], - "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "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, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -4531,8 +4893,9 @@ }, "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, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4543,19 +4906,23 @@ }, "node_modules/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, - "license": "MIT", "engines": { "node": ">= 6.0.0" } }, "node_modules/aproba": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "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/arch": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true, "funding": [ { @@ -4570,13 +4937,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/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, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -4587,105 +4954,120 @@ }, "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, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/argparse/node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "node_modules/aria-query": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=6.0" } }, "node_modules/array-flatten": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array-uniq": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/asn1": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } }, "node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/ast-types-flow": { "version": "0.0.7", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/async": { "version": "3.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true }, "node_modules/asynckit": { "version": "0.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/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, - "license": "(MIT OR Apache-2.0)", "bin": { "atob": "bin/atob.js" }, @@ -4695,6 +5077,8 @@ }, "node_modules/autoprefixer": { "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", "dev": true, "funding": [ { @@ -4706,7 +5090,6 @@ "url": "https://tidelift.com/funding/github/npm/autoprefixer" } ], - "license": "MIT", "dependencies": { "browserslist": "^4.20.3", "caniuse-lite": "^1.0.30001335", @@ -4727,29 +5110,33 @@ }, "node_modules/aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true }, "node_modules/axobject-query": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", + "integrity": "sha512-vy5JPSOibF9yAeC2PoemRdA1MuSXX7vX5osdoxKf/6OUeppAWekZ3JIJVNWFMH6wgj7uHYyqZUSqE/b/3JLV1A==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=6.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, - "license": "MIT", "dependencies": { "find-cache-dir": "^3.3.1", "loader-utils": "^2.0.0", @@ -4766,8 +5153,9 @@ }, "node_modules/babel-loader/node_modules/loader-utils": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -4779,16 +5167,18 @@ }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, - "license": "MIT", "dependencies": { "object.assign": "^4.1.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, - "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -4802,8 +5192,9 @@ }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.13.11", "@babel/helper-define-polyfill-provider": "^0.3.1", @@ -4815,16 +5206,18 @@ }, "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, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.1", "core-js-compat": "^3.21.0" @@ -4835,8 +5228,9 @@ }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.1" }, @@ -4846,8 +5240,9 @@ }, "node_modules/bail": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4855,11 +5250,14 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "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==", "funding": [ { "type": "github", @@ -4873,50 +5271,55 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "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, - "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } }, "node_modules/batch": { "version": "0.6.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } }, "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, - "license": "MIT", "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -4925,6 +5328,8 @@ }, "node_modules/bl/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": [ { @@ -4940,7 +5345,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -4948,13 +5352,15 @@ }, "node_modules/blob-util": { "version": "2.0.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true }, "node_modules/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, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -4967,13 +5373,15 @@ }, "node_modules/bluebird": { "version": "3.7.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, "node_modules/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, - "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", @@ -4995,21 +5403,24 @@ }, "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, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/body-parser/node_modules/qs": { "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -5022,8 +5433,9 @@ }, "node_modules/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, - "license": "MIT", "dependencies": { "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", @@ -5033,21 +5445,24 @@ }, "node_modules/boolbase": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -5057,12 +5472,15 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/browserslist": { - "version": "4.20.4", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", + "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", "dev": true, "funding": [ { @@ -5074,13 +5492,11 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], - "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001349", - "electron-to-chromium": "^1.4.147", - "escalade": "^3.1.1", + "caniuse-lite": "^1.0.30001359", + "electron-to-chromium": "^1.4.172", "node-releases": "^2.0.5", - "picocolors": "^1.0.0" + "update-browserslist-db": "^1.0.4" }, "bin": { "browserslist": "cli.js" @@ -5091,16 +5507,18 @@ }, "node_modules/browserstack": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", + "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", "dev": true, - "license": "MIT", "dependencies": { "https-proxy-agent": "^2.2.1" } }, "node_modules/browserstack/node_modules/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, - "license": "MIT", "dependencies": { "es6-promisify": "^5.0.0" }, @@ -5110,16 +5528,18 @@ }, "node_modules/browserstack/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/browserstack/node_modules/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, - "license": "MIT", "dependencies": { "agent-base": "^4.3.0", "debug": "^3.1.0" @@ -5130,6 +5550,8 @@ }, "node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -5144,7 +5566,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -5152,26 +5573,30 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true }, "node_modules/buffer-from": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/builtin-modules": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -5179,24 +5604,27 @@ }, "node_modules/builtins": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, - "license": "MIT", "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, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/cacache": { "version": "16.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.7.tgz", + "integrity": "sha512-a4zfQpp5vm4Ipdvbj+ZrPonikRhm6WBEd4zT1Yc1DXsmAxrPgDwWBLF/u/wTVXSFPIgOJ1U3ghSa2Xm4s3h28w==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -5223,16 +5651,18 @@ }, "node_modules/cachedir": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "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, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -5243,23 +5673,26 @@ }, "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, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "engines": { "node": ">=6" } }, "node_modules/camelcase-keys": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -5273,7 +5706,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001355", + "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, "funding": [ { @@ -5284,18 +5719,19 @@ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/caseless": { "version": "0.12.0", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true }, "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, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5307,8 +5743,9 @@ }, "node_modules/character-entities": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5316,8 +5753,9 @@ }, "node_modules/character-entities-legacy": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5325,8 +5763,9 @@ }, "node_modules/character-reference-invalid": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5334,19 +5773,23 @@ }, "node_modules/chardet": { "version": "0.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, "node_modules/check-more-types": { "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/chokidar": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -5354,7 +5797,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5373,37 +5815,42 @@ }, "node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "ISC", "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, - "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/ci-info": { "version": "3.3.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "dev": true }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -5413,8 +5860,9 @@ }, "node_modules/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, - "license": "MIT", "engines": { "node": ">=6" }, @@ -5424,8 +5872,9 @@ }, "node_modules/cli-table3": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", "dev": true, - "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -5438,8 +5887,9 @@ }, "node_modules/cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, - "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -5453,15 +5903,17 @@ }, "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, - "license": "ISC", "engines": { "node": ">= 10" } }, "node_modules/cliui": { "version": "7.0.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -5470,16 +5922,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -5491,8 +5945,9 @@ }, "node_modules/clone-regexp": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", "dev": true, - "license": "MIT", "dependencies": { "is-regexp": "^2.0.0" }, @@ -5502,8 +5957,9 @@ }, "node_modules/codelyzer": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.2.tgz", + "integrity": "sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g==", "dev": true, - "license": "MIT", "dependencies": { "@angular/compiler": "9.0.0", "@angular/core": "9.0.0", @@ -5528,16 +5984,18 @@ }, "node_modules/codelyzer/node_modules/@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, - "license": "MIT", "peerDependencies": { "tslib": "^1.10.0" } }, "node_modules/codelyzer/node_modules/@angular/core": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", "dev": true, - "license": "MIT", "peerDependencies": { "rxjs": "^6.5.3", "tslib": "^1.10.0", @@ -5546,8 +6004,9 @@ }, "node_modules/codelyzer/node_modules/aria-query": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "ast-types-flow": "0.0.7", "commander": "^2.11.0" @@ -5555,21 +6014,24 @@ }, "node_modules/codelyzer/node_modules/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, - "license": "Apache-2.0", "dependencies": { "ast-types-flow": "0.0.7" } }, "node_modules/codelyzer/node_modules/commander": { "version": "2.20.3", - "dev": true, - "license": "MIT" + "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/codelyzer/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, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -5579,65 +6041,74 @@ }, "node_modules/codelyzer/node_modules/source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/codelyzer/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/codelyzer/node_modules/zone.js": { "version": "0.10.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", + "dev": true }, "node_modules/codemirror": { - "version": "5.65.5", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.5.tgz", - "integrity": "sha512-HNyhvGLnYz5c+kIsB9QKVitiZUevha3ovbIYaQiGzKo7ECSL/elWD9RXt3JgNr0NdnyqE9/Rc/7uLfkJQL638w==" + "version": "5.65.6", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.6.tgz", + "integrity": "sha512-zNihMSMoDxK9Gqv9oEyDT8oM51rcRrQ+IEo2zyS48gJByBq5Fj8XuNEguMra+MuIOuh6lkpnLUJeL70DoTt6yw==" }, "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, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "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, - "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/colorette": { "version": "2.0.19", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true }, "node_modules/colors": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.1.90" } }, "node_modules/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, - "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5647,34 +6118,39 @@ }, "node_modules/commander": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/common-tags": { "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/commondir": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true }, "node_modules/component-emitter": { "version": "1.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "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, - "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -5684,8 +6160,9 @@ }, "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, - "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -5701,34 +6178,39 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -5741,34 +6223,39 @@ }, "node_modules/connect-history-api-fallback": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/connect/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -5778,6 +6265,8 @@ }, "node_modules/content-disposition/node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -5792,42 +6281,46 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "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, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.1" } }, "node_modules/cookie": { "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { "version": "1.0.6", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -5837,8 +6330,9 @@ }, "node_modules/copy-webpack-plugin": { "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", "dev": true, - "license": "MIT", "dependencies": { "fast-glob": "^3.2.7", "glob-parent": "^6.0.1", @@ -5860,8 +6354,9 @@ }, "node_modules/copy-webpack-plugin/node_modules/array-union": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -5871,8 +6366,9 @@ }, "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, - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5882,8 +6378,9 @@ }, "node_modules/copy-webpack-plugin/node_modules/globby": { "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^3.0.1", "dir-glob": "^3.0.1", @@ -5901,8 +6398,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -5919,8 +6417,9 @@ }, "node_modules/copy-webpack-plugin/node_modules/slash": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -5929,11 +6428,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.23.1", + "version": "3.23.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.3.tgz", + "integrity": "sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==", "dev": true, - "license": "MIT", "dependencies": { - "browserslist": "^4.20.4", + "browserslist": "^4.21.0", "semver": "7.0.0" }, "funding": { @@ -5943,20 +6443,23 @@ }, "node_modules/core-js-compat/node_modules/semver": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/core-util-is": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true }, "node_modules/cors": { "version": "2.8.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -5967,8 +6470,9 @@ }, "node_modules/cosmiconfig": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -5982,8 +6486,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.0", "css-select": "^4.2.0", @@ -5995,8 +6500,9 @@ }, "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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6009,8 +6515,9 @@ }, "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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6024,8 +6531,9 @@ }, "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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6035,26 +6543,30 @@ }, "node_modules/critters/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/critters/node_modules/parse5": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6064,8 +6576,9 @@ }, "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, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -6077,8 +6590,9 @@ }, "node_modules/css": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.4", "source-map": "^0.6.1", @@ -6087,8 +6601,9 @@ }, "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, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -6104,8 +6619,9 @@ }, "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, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -6121,8 +6637,9 @@ }, "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, - "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.7", @@ -6146,8 +6663,9 @@ }, "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, - "license": "CC0-1.0", "bin": { "css-prefers-color-scheme": "dist/cli.cjs" }, @@ -6160,8 +6678,9 @@ }, "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, - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -6175,8 +6694,9 @@ }, "node_modules/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, - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "fastparse": "^1.1.2" @@ -6184,8 +6704,9 @@ }, "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, - "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -6195,24 +6716,27 @@ }, "node_modules/css/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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/cssauron": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==", "dev": true, - "license": "MIT", "dependencies": { "through": "X.X.X" } }, "node_modules/cssdb": { "version": "6.6.3", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", + "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", "dev": true, - "license": "CC0-1.0", "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" @@ -6220,8 +6744,9 @@ }, "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, - "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -6231,14 +6756,16 @@ }, "node_modules/custom-event": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true }, "node_modules/cypress": { - "version": "10.1.0", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.3.0.tgz", + "integrity": "sha512-txkQWKzvBVnWdCuKs5Xc08gjpO89W2Dom2wpZgT9zWZT5jXxqPIxqP/NC1YArtkpmp3fN5HW8aDjYBizHLUFvg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "@cypress/request": "^2.88.10", "@cypress/xvfb": "^1.2.4", @@ -6288,17 +6815,13 @@ }, "engines": { "node": ">=12.0.0" - }, - "workspaces": { - "nohoist": [ - "@types/*" - ] } }, "node_modules/cypress-terminal-report": { - "version": "4.0.1", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cypress-terminal-report/-/cypress-terminal-report-4.0.2.tgz", + "integrity": "sha512-sk7zBRZIh19U32pbOyv6GtlWPxE1C6l+mMAhnPAmsv619s7+O7/jZbI4YZfM2MyO50Om/qEq7W5rVP8yolihAA==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^3.0.0", "fs-extra": "^9.0.1", @@ -6312,8 +6835,9 @@ }, "node_modules/cypress-terminal-report/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6326,8 +6850,9 @@ }, "node_modules/cypress-terminal-report/node_modules/chalk": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6338,8 +6863,9 @@ }, "node_modules/cypress-terminal-report/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6349,21 +6875,24 @@ }, "node_modules/cypress-terminal-report/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/cypress-terminal-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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cypress-terminal-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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6373,13 +6902,15 @@ }, "node_modules/cypress/node_modules/@types/node": { "version": "14.18.21", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz", + "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==", + "dev": true }, "node_modules/cypress/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6392,6 +6923,8 @@ }, "node_modules/cypress/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": [ { @@ -6407,7 +6940,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -6415,8 +6947,9 @@ }, "node_modules/cypress/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6430,8 +6963,9 @@ }, "node_modules/cypress/node_modules/chalk/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6441,8 +6975,9 @@ }, "node_modules/cypress/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6452,21 +6987,24 @@ }, "node_modules/cypress/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/cypress/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cypress/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6479,13 +7017,15 @@ }, "node_modules/damerau-levenshtein": { "version": "1.0.8", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true }, "node_modules/dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -6495,29 +7035,33 @@ }, "node_modules/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, - "license": "MIT", "engines": { "node": ">=4.0" } }, "node_modules/dateformat": { "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/dayjs": { "version": "1.11.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz", + "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A==", + "dev": true }, "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, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -6532,15 +7076,17 @@ }, "node_modules/decamelize": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "engines": { "node": ">=0.10.0" } }, "node_modules/decamelize-keys": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", "dev": true, - "license": "MIT", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -6551,29 +7097,33 @@ }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, - "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/deep-is": { "version": "0.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": 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, - "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -6583,8 +7133,9 @@ }, "node_modules/default-gateway/node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -6605,8 +7156,9 @@ }, "node_modules/default-gateway/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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -6616,32 +7168,36 @@ }, "node_modules/default-gateway/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, - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/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, - "license": "MIT", "dependencies": { "clone": "^1.0.2" } }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/define-properties": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, - "license": "MIT", "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -6655,8 +7211,9 @@ }, "node_modules/del": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", "dev": true, - "license": "MIT", "dependencies": { "globby": "^5.0.0", "is-path-cwd": "^1.0.0", @@ -6672,8 +7229,9 @@ }, "node_modules/del/node_modules/array-union": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, - "license": "MIT", "dependencies": { "array-uniq": "^1.0.1" }, @@ -6683,8 +7241,9 @@ }, "node_modules/del/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6692,8 +7251,9 @@ }, "node_modules/del/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6711,8 +7271,9 @@ }, "node_modules/del/node_modules/globby": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^1.0.1", "arrify": "^1.0.0", @@ -6727,8 +7288,9 @@ }, "node_modules/del/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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6738,8 +7300,9 @@ }, "node_modules/del/node_modules/rimraf": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -6749,37 +7312,42 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/delegates": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "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, - "license": "MIT", "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, - "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -6787,30 +7355,35 @@ }, "node_modules/detect-node": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true }, "node_modules/di": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true }, "node_modules/diff": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/dijkstrajs": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" }, "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, - "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -6820,13 +7393,15 @@ }, "node_modules/dns-equal": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -6836,8 +7411,9 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -6847,8 +7423,9 @@ }, "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, - "license": "MIT", "dependencies": { "custom-event": "~1.0.0", "ent": "~2.2.0", @@ -6858,8 +7435,9 @@ }, "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, - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -6871,19 +7449,21 @@ }, "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" } - ], - "license": "BSD-2-Clause" + ] }, "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, - "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -6896,8 +7476,9 @@ }, "node_modules/domutils": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -6909,16 +7490,18 @@ }, "node_modules/dotenv": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=10" } }, "node_modules/ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, - "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -6926,21 +7509,24 @@ }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" } }, "node_modules/ee-first": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true }, "node_modules/ejs": { "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -6952,38 +7538,44 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.160", - "dev": true, - "license": "ISC" + "version": "1.4.179", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.179.tgz", + "integrity": "sha512-1XeTb/U/8Xgh2YgPOqhakLYsvCcU4U7jUjTMbEnhIJoIWd/Qt3yC8y0cbG+fHzn4zUNF99Ey1xiPf20bwgLO3Q==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/emojis-list": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/encode-utf8": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" }, "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, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/encoding": { "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -6991,8 +7583,9 @@ }, "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, - "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -7003,16 +7596,18 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/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, - "license": "MIT", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -7031,16 +7626,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/enhanced-resolve": { - "version": "5.9.3", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -7051,8 +7648,9 @@ }, "node_modules/enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -7062,34 +7660,39 @@ }, "node_modules/ent": { "version": "2.2.0", - "dev": true, - "license": "MIT" + "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, - "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/err-code": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -7100,35 +7703,40 @@ }, "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, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-module-lexer": { "version": "0.9.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true }, "node_modules/es6-promise": { "version": "4.2.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true }, "node_modules/es6-promisify": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", "dev": true, - "license": "MIT", "dependencies": { "es6-promise": "^4.0.3" } }, "node_modules/esbuild": { "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", + "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "bin": { "esbuild": "bin/esbuild" @@ -7159,13 +7767,46 @@ "esbuild-windows-arm64": "0.14.38" } }, - "node_modules/esbuild-darwin-64": { + "node_modules/esbuild-android-64": { "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", + "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", + "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", + "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -7174,10 +7815,235 @@ "node": ">=12" } }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", + "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", + "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", + "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", + "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", + "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", + "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", + "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", + "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", + "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", + "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", + "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", + "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", + "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", + "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/esbuild-wasm": { "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.38.tgz", + "integrity": "sha512-mObTw5/3+KIOTShVgk3fuEn+INnHgOSbWJuGkInEZTWpUOh/+TCSgRxl5cDon4OkoaLU5rWm7R7Dkl/mJv8SGw==", "dev": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -7185,30 +8051,82 @@ "node": ">=12" } }, + "node_modules/esbuild-windows-32": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", + "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", + "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", + "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "engines": { "node": ">=6" } }, "node_modules/escape-html": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { - "version": "8.17.0", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", + "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", "dev": true, - "license": "MIT", "dependencies": { "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", @@ -7258,8 +8176,9 @@ }, "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, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -7270,8 +8189,9 @@ }, "node_modules/eslint-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -7287,24 +8207,27 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint-visitor-keys": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -7318,8 +8241,9 @@ }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7332,13 +8256,15 @@ }, "node_modules/eslint/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/eslint/node_modules/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7346,8 +8272,9 @@ }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7361,8 +8288,9 @@ }, "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7372,13 +8300,15 @@ }, "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -7388,8 +8318,9 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -7400,16 +8331,18 @@ }, "node_modules/eslint/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, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -7418,9 +8351,10 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.15.0", + "version": "13.16.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", + "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -7433,16 +8367,18 @@ }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -7452,13 +8388,15 @@ }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7468,8 +8406,9 @@ }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7479,8 +8418,9 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -7490,8 +8430,9 @@ }, "node_modules/espree": { "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.7.1", "acorn-jsx": "^5.3.2", @@ -7503,8 +8444,9 @@ }, "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, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -7515,8 +8457,9 @@ }, "node_modules/esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -7526,16 +8469,18 @@ }, "node_modules/esquery/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, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -7545,63 +8490,72 @@ }, "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, - "license": "BSD-2-Clause", "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, - "license": "BSD-2-Clause", "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, - "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/etag": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/eventemitter-asyncresource": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true }, "node_modules/eventemitter2": { - "version": "6.4.5", - "dev": true, - "license": "MIT" + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.6.tgz", + "integrity": "sha512-OHqo4wbHX5VbvlbB6o6eDwhYmiTjrpWACjF8Pmof/GTD6rdBNdZFNck3xlhqOiQFGCOoq3uzHvA0cQpFHIGVAQ==", + "dev": true }, "node_modules/eventemitter3": { "version": "4.0.7", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -7622,8 +8576,9 @@ }, "node_modules/execall": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", "dev": true, - "license": "MIT", "dependencies": { "clone-regexp": "^2.1.0" }, @@ -7633,8 +8588,9 @@ }, "node_modules/executable": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^2.2.0" }, @@ -7644,6 +8600,8 @@ }, "node_modules/exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -7651,8 +8609,9 @@ }, "node_modules/express": { "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -7692,29 +8651,33 @@ }, "node_modules/express/node_modules/array-flatten": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -7730,13 +8693,15 @@ }, "node_modules/express/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/express/node_modules/qs": { "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -7749,6 +8714,8 @@ }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -7763,26 +8730,28 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "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, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/extend": { "version": "3.0.2", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -7794,8 +8763,9 @@ }, "node_modules/external-editor/node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -7805,8 +8775,9 @@ }, "node_modules/extract-zip": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -7824,21 +8795,24 @@ }, "node_modules/extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" - ], - "license": "MIT" + ] }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "dev": true, - "license": "MIT" + "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.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -7852,40 +8826,47 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "node_modules/fast-sha256": { "version": "1.3.0", - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", + "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==" }, "node_modules/fastest-levenshtein": { "version": "1.0.12", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true }, "node_modules/fastparse": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "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, - "license": "ISC", "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, - "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -7895,16 +8876,18 @@ }, "node_modules/fd-slicer": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, - "license": "MIT", "dependencies": { "pend": "~1.2.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, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -7917,8 +8900,9 @@ }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -7928,20 +8912,23 @@ }, "node_modules/file-saver": { "version": "2.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" }, "node_modules/filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "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, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -7951,8 +8938,9 @@ }, "node_modules/finalhandler": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -7968,21 +8956,24 @@ }, "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, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -7992,8 +8983,9 @@ }, "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, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -8008,7 +9000,8 @@ }, "node_modules/find-up": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -8019,16 +9012,18 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -8038,12 +9033,15 @@ } }, "node_modules/flatted": { - "version": "3.2.5", - "dev": true, - "license": "ISC" + "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 }, "node_modules/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, "funding": [ { @@ -8051,7 +9049,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -8063,16 +9060,18 @@ }, "node_modules/forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/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, - "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -8084,16 +9083,18 @@ }, "node_modules/forwarded": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, - "license": "MIT", "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, - "license": "MIT", "engines": { "node": "*" }, @@ -8104,21 +9105,24 @@ }, "node_modules/fresh": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fs-constants": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -8131,8 +9135,9 @@ }, "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, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8142,18 +9147,22 @@ }, "node_modules/fs-monkey": { "version": "1.0.3", - "dev": true, - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -8164,23 +9173,27 @@ }, "node_modules/fsu": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fsu/-/fsu-1.1.1.tgz", + "integrity": "sha512-xQVsnjJ/5pQtcKh+KjUoZGzVWn4uNkchxTF6Lwjr4Gf7nQr8fmUfhKJ62zE77+xQg9xnxi5KUps7XGs+VC986A==", + "dev": true }, "node_modules/function-bind": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "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, - "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -8197,23 +9210,26 @@ }, "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, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/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, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -8225,16 +9241,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/get-stdin": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8244,8 +9262,9 @@ }, "node_modules/get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, - "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -8258,24 +9277,27 @@ }, "node_modules/getos": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "dev": true, - "license": "MIT", "dependencies": { "async": "^3.2.0" } }, "node_modules/getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/glob": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz", + "integrity": "sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8293,8 +9315,9 @@ }, "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, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -8304,13 +9327,15 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "node_modules/global-dirs": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "dev": true, - "license": "MIT", "dependencies": { "ini": "2.0.0" }, @@ -8323,16 +9348,18 @@ }, "node_modules/global-dirs/node_modules/ini": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/global-modules": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, - "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -8342,8 +9369,9 @@ }, "node_modules/global-prefix": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, - "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -8355,13 +9383,15 @@ }, "node_modules/global-prefix/node_modules/ini": { "version": "1.3.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -8371,16 +9401,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -8398,13 +9430,15 @@ }, "node_modules/globjoin": { "version": "0.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dev": true }, "node_modules/gonzales-pe": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.5" }, @@ -8416,46 +9450,54 @@ } }, "node_modules/google-proto-files": { - "version": "2.5.2", - "license": "MIT", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-3.0.0.tgz", + "integrity": "sha512-YN2mHdmxnrMrQbC5jXmXZda0aQ90as7uMsUIxoqL6tydwz+7GjoQ0OsZ8kJmDXxXMZRgY5PFjqIvWKjEYyNGjQ==", "dependencies": { "protobufjs": "^6.8.0", "walkdir": "^0.4.0" }, "engines": { - "node": ">=10" + "node": ">=12.0.0" } }, "node_modules/google-protobuf": { "version": "3.20.1", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.20.1.tgz", + "integrity": "sha512-XMf1+O32FjYIV3CYu6Tuh5PNbfNEU5Xu22X+Xkdb/DUexFlCzhvv7d5Iirm4AOwn8lv4al1YvIhzGrg2j9Zfzw==" }, "node_modules/graceful-fs": { "version": "4.2.10", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/grpc-web": { "version": "1.3.1", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/grpc-web/-/grpc-web-1.3.1.tgz", + "integrity": "sha512-VxyYEAGsatecAFY3xieRDzsuhm92yQBsJD7fd5Z3MY150hZWPwkrUWetzJ0QK5W0uym4+VedPQrei38wk0eIjQ==" }, "node_modules/handle-thing": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true }, "node_modules/har-schema": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true, - "license": "ISC", "engines": { "node": ">=4" } }, "node_modules/har-validator": { "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -8466,8 +9508,9 @@ }, "node_modules/har-validator/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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -8481,21 +9524,24 @@ }, "node_modules/har-validator/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "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/hard-rejection": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "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, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -8505,8 +9551,9 @@ }, "node_modules/has-ansi": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -8516,24 +9563,27 @@ }, "node_modules/has-ansi/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.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, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/has-property-descriptors": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -8543,8 +9593,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8554,13 +9605,15 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "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, - "license": "BSD", "dependencies": { "@assemblyscript/loader": "^0.10.1", "base64-js": "^1.2.0", @@ -8569,13 +9622,15 @@ }, "node_modules/hdr-histogram-percentiles-obj": { "version": "3.0.0", - "dev": true, - "license": "MIT" + "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/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "peer": true, "bin": { "he": "bin/he" @@ -8583,8 +9638,9 @@ }, "node_modules/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, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -8594,8 +9650,9 @@ }, "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, - "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -8605,8 +9662,9 @@ }, "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, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8619,26 +9677,30 @@ }, "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, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/html-entities": { "version": "2.3.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "node_modules/html-tags": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -8648,8 +9710,9 @@ }, "node_modules/htmlparser2": { "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "dev": true, - "license": "MIT", "dependencies": { "domelementtype": "^1.3.1", "domhandler": "^2.3.0", @@ -8661,8 +9724,9 @@ }, "node_modules/htmlparser2/node_modules/dom-serializer": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "dev": true, - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "entities": "^2.0.0" @@ -8670,40 +9734,45 @@ }, "node_modules/htmlparser2/node_modules/dom-serializer/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" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/htmlparser2/node_modules/domelementtype": { "version": "1.3.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true }, "node_modules/htmlparser2/node_modules/domhandler": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "domelementtype": "1" } }, "node_modules/htmlparser2/node_modules/domutils": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "0", "domelementtype": "1" @@ -8711,23 +9780,27 @@ }, "node_modules/htmlparser2/node_modules/entities": { "version": "1.1.2", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true }, "node_modules/http-cache-semantics": { "version": "4.1.0", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true }, "node_modules/http-deceiver": { "version": "1.2.7", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -8741,21 +9814,24 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/http-parser-js": { - "version": "0.5.6", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -8767,8 +9843,9 @@ }, "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, - "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -8780,8 +9857,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -8803,8 +9881,9 @@ }, "node_modules/http-proxy-middleware/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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8814,8 +9893,9 @@ }, "node_modules/http-signature": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -8827,8 +9907,9 @@ }, "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, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -8839,24 +9920,27 @@ }, "node_modules/human-signals": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8.12.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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -8866,8 +9950,9 @@ }, "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, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -8877,6 +9962,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -8890,21 +9977,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "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, - "license": "MIT", "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, - "license": "ISC", "dependencies": { "minimatch": "^5.0.1" }, @@ -8914,8 +10002,9 @@ }, "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, - "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -8926,18 +10015,21 @@ }, "node_modules/immediate": { "version": "3.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true }, "node_modules/immutable": { "version": "4.1.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -8951,45 +10043,51 @@ }, "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, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/import-lazy": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infer-owner": { "version": "1.0.4", - "dev": true, - "license": "ISC" + "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, - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -8997,21 +10095,24 @@ }, "node_modules/inherits": { "version": "2.0.4", - "dev": true, - "license": "ISC" + "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, - "license": "ISC", "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, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -9035,8 +10136,9 @@ }, "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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9049,8 +10151,9 @@ }, "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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9064,8 +10167,9 @@ }, "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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9075,21 +10179,24 @@ }, "node_modules/inquirer/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9099,21 +10206,24 @@ }, "node_modules/ip": { "version": "1.1.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "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, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/is-alphabetical": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9121,8 +10231,9 @@ }, "node_modules/is-alphanumerical": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, - "license": "MIT", "dependencies": { "is-alphabetical": "^1.0.0", "is-decimal": "^1.0.0" @@ -9134,13 +10245,15 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9150,6 +10263,8 @@ }, "node_modules/is-buffer": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, "funding": [ { @@ -9165,15 +10280,15 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/is-ci": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, - "license": "MIT", "dependencies": { "ci-info": "^3.2.0" }, @@ -9183,8 +10298,9 @@ }, "node_modules/is-core-module": { "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, - "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -9194,8 +10310,9 @@ }, "node_modules/is-decimal": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9203,8 +10320,9 @@ }, "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, - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -9217,23 +10335,26 @@ }, "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -9243,8 +10364,9 @@ }, "node_modules/is-hexadecimal": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9252,8 +10374,9 @@ }, "node_modules/is-installed-globally": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, - "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -9267,37 +10390,42 @@ }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-lambda": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-path-cwd": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, - "license": "MIT", "dependencies": { "is-path-inside": "^1.0.0" }, @@ -9307,8 +10435,9 @@ }, "node_modules/is-path-in-cwd/node_modules/is-path-inside": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", "dev": true, - "license": "MIT", "dependencies": { "path-is-inside": "^1.0.1" }, @@ -9318,24 +10447,27 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "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, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -9345,16 +10477,18 @@ }, "node_modules/is-regexp": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "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, - "license": "MIT", "engines": { "node": ">=8" }, @@ -9364,13 +10498,15 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -9380,13 +10516,15 @@ }, "node_modules/is-what": { "version": "3.14.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -9396,13 +10534,15 @@ }, "node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": ">= 8.0.0" }, @@ -9412,34 +10552,39 @@ }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isstream": { "version": "0.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true }, "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, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/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, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -9453,16 +10598,18 @@ }, "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, - "license": "ISC", "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, - "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -9474,16 +10621,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9493,8 +10642,9 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^2.0.5", @@ -9508,8 +10658,9 @@ }, "node_modules/istanbul-lib-source-maps/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9517,8 +10668,9 @@ }, "node_modules/istanbul-lib-source-maps/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9536,16 +10688,18 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=6" } }, "node_modules/istanbul-lib-source-maps/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, - "license": "MIT", "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -9556,8 +10710,9 @@ }, "node_modules/istanbul-lib-source-maps/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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9567,16 +10722,18 @@ }, "node_modules/istanbul-lib-source-maps/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, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -9586,24 +10743,27 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/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, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -9614,8 +10774,9 @@ }, "node_modules/jake": { "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -9631,8 +10792,9 @@ }, "node_modules/jake/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9645,8 +10807,9 @@ }, "node_modules/jake/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9654,8 +10817,9 @@ }, "node_modules/jake/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9669,8 +10833,9 @@ }, "node_modules/jake/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9680,21 +10845,24 @@ }, "node_modules/jake/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jake/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jake/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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9704,8 +10872,9 @@ }, "node_modules/jake/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9715,8 +10884,9 @@ }, "node_modules/jasmine": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==", "dev": true, - "license": "MIT", "dependencies": { "exit": "^0.1.2", "glob": "^7.0.6", @@ -9727,22 +10897,25 @@ } }, "node_modules/jasmine-core": { - "version": "4.1.1", - "dev": true, - "license": "MIT" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.2.0.tgz", + "integrity": "sha512-OcFpBrIhnbmb9wfI8cqPSJ50pv3Wg4/NSgoZIqHzIwO/2a9qivJWzv8hUvaREIMYYJBas6AvfXATFdVuzzCqVw==", + "dev": true }, "node_modules/jasmine-spec-reporter": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "colors": "1.4.0" } }, "node_modules/jasmine/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9750,8 +10923,9 @@ }, "node_modules/jasmine/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9769,13 +10943,15 @@ }, "node_modules/jasmine/node_modules/jasmine-core": { "version": "2.8.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==", + "dev": true }, "node_modules/jasmine/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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9785,16 +10961,18 @@ }, "node_modules/jasminewd2": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6.9.x" } }, "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, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -9806,16 +10984,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9828,13 +11008,15 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -9845,13 +11027,15 @@ }, "node_modules/jsbn": { "version": "0.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -9861,33 +11045,39 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "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": { "version": "0.4.0", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true }, "node_modules/json5": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -9897,13 +11087,15 @@ }, "node_modules/jsonc-parser": { "version": "3.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -9913,16 +11105,18 @@ }, "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" - ], - "license": "MIT" + ] }, "node_modules/jsonwebtoken": { "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "dev": true, - "license": "MIT", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -9942,19 +11136,21 @@ }, "node_modules/jsonwebtoken/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/jsprim": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", "dev": true, "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -9964,8 +11160,9 @@ }, "node_modules/jszip": { "version": "3.10.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.0.tgz", + "integrity": "sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==", "dev": true, - "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -9975,8 +11172,9 @@ }, "node_modules/jszip/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, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9989,16 +11187,18 @@ }, "node_modules/jszip/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, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/jwa": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, - "license": "MIT", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -10007,17 +11207,19 @@ }, "node_modules/jws": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, - "license": "MIT", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, "node_modules/karma": { - "version": "6.3.20", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz", + "integrity": "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==", "dev": true, - "license": "MIT", "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -10053,16 +11255,18 @@ }, "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, - "license": "MIT", "dependencies": { "which": "^1.2.1" } }, "node_modules/karma-chrome-launcher/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10072,8 +11276,9 @@ }, "node_modules/karma-coverage-istanbul-reporter": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", "dev": true, - "license": "MIT", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-report": "^3.0.0", @@ -10087,8 +11292,9 @@ }, "node_modules/karma-coverage-istanbul-reporter/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -10096,8 +11302,9 @@ }, "node_modules/karma-coverage-istanbul-reporter/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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10106,9 +11313,10 @@ } }, "node_modules/karma-jasmine": { - "version": "5.0.1", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", "dev": true, - "license": "MIT", "dependencies": { "jasmine-core": "^4.1.0" }, @@ -10121,8 +11329,9 @@ }, "node_modules/karma-jasmine-html-reporter": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", "dev": true, - "license": "MIT", "peerDependencies": { "jasmine-core": "^4.0.0", "karma": "^6.0.0", @@ -10131,16 +11340,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -10148,8 +11359,9 @@ }, "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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10167,8 +11379,9 @@ }, "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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10178,8 +11391,9 @@ }, "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, - "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -10189,16 +11403,18 @@ }, "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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.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, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -10214,45 +11430,51 @@ }, "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, - "license": "ISC", "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, - "license": "MIT", "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, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/known-css-properties": { "version": "0.21.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", + "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "dev": true }, "node_modules/lazy-ass": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "dev": true, - "license": "MIT", "engines": { "node": "> 0.8" } }, "node_modules/less": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", + "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -10276,8 +11498,9 @@ }, "node_modules/less-loader": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz", + "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==", "dev": true, - "license": "MIT", "dependencies": { "klona": "^2.0.4" }, @@ -10295,8 +11518,9 @@ }, "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, - "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -10308,8 +11532,9 @@ }, "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, - "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -10320,8 +11545,9 @@ }, "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, - "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -10329,8 +11555,9 @@ }, "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, - "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -10338,8 +11565,9 @@ }, "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, - "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -10347,8 +11575,9 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -10358,13 +11587,15 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.10.6", - "license": "MIT" + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.7.tgz", + "integrity": "sha512-jZXLCCWMe1b/HXkjiLeYt2JsytZMcqH26jLFIdzFDFF0xvSUWrYKyvPlyPG+XJzEyKUFbcZxLdWGMwQsWaHDxQ==" }, "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, - "license": "ISC", "dependencies": { "webpack-sources": "^3.0.0" }, @@ -10379,21 +11610,24 @@ }, "node_modules/lie": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, - "license": "MIT", "dependencies": { "immediate": "~3.0.5" } }, "node_modules/lines-and-columns": { "version": "1.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/listr2": { "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "dev": true, - "license": "MIT", "dependencies": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -10418,23 +11652,26 @@ }, "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, - "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/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, - "license": "MIT", "engines": { "node": ">= 12.13.0" } }, "node_modules/locate-path": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dependencies": { "p-locate": "^4.1.0" }, @@ -10444,87 +11681,104 @@ }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.camelcase": { "version": "4.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true }, "node_modules/lodash.includes": { "version": "4.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true }, "node_modules/lodash.isempty": { "version": "4.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==", + "dev": true }, "node_modules/lodash.isfunction": { "version": "3.0.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true }, "node_modules/lodash.isobject": { "version": "3.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", + "dev": true }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true }, "node_modules/lodash.isstring": { "version": "4.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "node_modules/lodash.once": { "version": "4.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true }, "node_modules/lodash.sortby": { "version": "4.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true }, "node_modules/lodash.truncate": { "version": "4.4.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "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, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -10538,8 +11792,9 @@ }, "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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10552,8 +11807,9 @@ }, "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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10567,8 +11823,9 @@ }, "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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10578,21 +11835,24 @@ }, "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10602,8 +11862,9 @@ }, "node_modules/log-update": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -10619,8 +11880,9 @@ }, "node_modules/log-update/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10633,8 +11895,9 @@ }, "node_modules/log-update/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10644,13 +11907,15 @@ }, "node_modules/log-update/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -10665,8 +11930,9 @@ }, "node_modules/log-update/node_modules/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10678,8 +11944,9 @@ }, "node_modules/log4js": { "version": "6.5.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.5.2.tgz", + "integrity": "sha512-DXtpNtt+KDOMT7RHUDIur/WsSA3rntlUh9Zg4XCdV42wUuMmbFkl38+LZ92Z5QvQA7mD5kAVkLiBSEH/tvUB8A==", "dev": true, - "license": "Apache-2.0", "dependencies": { "date-format": "^4.0.10", "debug": "^4.3.4", @@ -10693,12 +11960,14 @@ }, "node_modules/long": { "version": "4.0.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "node_modules/longest-streak": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -10706,8 +11975,9 @@ }, "node_modules/loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, - "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -10716,17 +11986,19 @@ } }, "node_modules/lru-cache": { - "version": "7.10.1", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", + "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", "dev": true, - "license": "ISC", "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, - "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.8" }, @@ -10736,8 +12008,9 @@ }, "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, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -10750,16 +12023,18 @@ }, "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, - "license": "ISC", "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, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.1.3", "cacache": "^15.2.0", @@ -10784,8 +12059,9 @@ }, "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, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" @@ -10793,8 +12069,9 @@ }, "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==", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -10805,8 +12082,9 @@ }, "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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -10814,8 +12092,9 @@ }, "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, - "license": "ISC", "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -10842,8 +12121,9 @@ }, "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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10861,8 +12141,9 @@ }, "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, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10872,8 +12153,9 @@ }, "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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10883,8 +12165,9 @@ }, "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, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -10894,8 +12177,9 @@ }, "node_modules/map-obj": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -10905,16 +12189,19 @@ }, "node_modules/material-colors": { "version": "1.2.6", - "license": "ISC" + "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" }, "node_modules/material-design-icons-iconfont": { "version": "6.7.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/material-design-icons-iconfont/-/material-design-icons-iconfont-6.7.0.tgz", + "integrity": "sha512-lSj71DgVv20kO0kGbs42icDzbRot61gEDBLQACzkUuznRQBUYmbxzEkGU6dNBb5fRWHMaScYlAXX96HQ4/cJWA==" }, "node_modules/mathml-tag-names": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -10922,8 +12209,9 @@ }, "node_modules/mdast-util-from-markdown": { "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-to-string": "^2.0.0", @@ -10938,8 +12226,9 @@ }, "node_modules/mdast-util-to-markdown": { "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "longest-streak": "^2.0.0", @@ -10955,8 +12244,9 @@ }, "node_modules/mdast-util-to-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -10964,18 +12254,20 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { - "version": "3.4.4", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", + "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", "dev": true, - "license": "Unlicense", "dependencies": { - "fs-monkey": "1.0.3" + "fs-monkey": "^1.0.3" }, "engines": { "node": ">= 4.0.0" @@ -10983,8 +12275,9 @@ }, "node_modules/meow": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -11008,8 +12301,9 @@ }, "node_modules/meow/node_modules/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, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11019,8 +12313,9 @@ }, "node_modules/meow/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, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11030,8 +12325,9 @@ }, "node_modules/meow/node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -11044,8 +12340,9 @@ }, "node_modules/meow/node_modules/type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -11055,40 +12352,47 @@ }, "node_modules/meow/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, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/merge-descriptors": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true }, "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "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, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micromark": { "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", "dev": true, "funding": [ { @@ -11100,7 +12404,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "debug": "^4.0.0", "parse-entities": "^2.0.0" @@ -11108,8 +12411,9 @@ }, "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, - "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -11120,8 +12424,9 @@ }, "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, - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -11131,16 +12436,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -11150,24 +12457,27 @@ }, "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, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/min-indent": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/mini-css-extract-plugin": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", "dev": true, - "license": "MIT", "dependencies": { "schema-utils": "^4.0.0" }, @@ -11184,8 +12494,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -11202,13 +12513,15 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "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.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11218,13 +12531,15 @@ }, "node_modules/minimist": { "version": "1.2.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true }, "node_modules/minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, - "license": "MIT", "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -11235,9 +12550,10 @@ } }, "node_modules/minipass": { - "version": "3.1.6", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11247,8 +12563,9 @@ }, "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, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -11258,8 +12575,9 @@ }, "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, - "license": "MIT", "dependencies": { "minipass": "^3.1.0", "minipass-sized": "^1.0.3", @@ -11274,8 +12592,9 @@ }, "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, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -11285,8 +12604,9 @@ }, "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, - "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -11294,8 +12614,9 @@ }, "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, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -11305,8 +12626,9 @@ }, "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, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -11316,8 +12638,9 @@ }, "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, - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -11328,8 +12651,9 @@ }, "node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -11339,8 +12663,9 @@ }, "node_modules/mocha": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", + "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@ungap/promise-all-settled": "1.1.2", @@ -11380,14 +12705,16 @@ }, "node_modules/mocha/node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "Python-2.0", "peer": true }, "node_modules/mocha/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, - "license": "MIT", "peer": true, "dependencies": { "balanced-match": "^1.0.0", @@ -11396,8 +12723,9 @@ }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -11408,8 +12736,9 @@ }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "locate-path": "^6.0.0", @@ -11424,8 +12753,9 @@ }, "node_modules/mocha/node_modules/glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -11444,8 +12774,9 @@ }, "node_modules/mocha/node_modules/glob/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, - "license": "ISC", "peer": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -11456,8 +12787,9 @@ }, "node_modules/mocha/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, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -11465,8 +12797,9 @@ }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "argparse": "^2.0.1" @@ -11477,8 +12810,9 @@ }, "node_modules/mocha/node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "p-locate": "^5.0.0" @@ -11492,14 +12826,16 @@ }, "node_modules/mocha/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, - "license": "MIT", "peer": true }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "yocto-queue": "^0.1.0" @@ -11513,8 +12849,9 @@ }, "node_modules/mocha/node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "p-limit": "^3.0.2" @@ -11528,8 +12865,9 @@ }, "node_modules/mocha/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, - "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -11543,8 +12881,9 @@ }, "node_modules/mocha/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, - "license": "MIT", "peer": true, "dependencies": { "cliui": "^7.0.2", @@ -11561,8 +12900,9 @@ }, "node_modules/mocha/node_modules/yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "license": "ISC", "peer": true, "engines": { "node": ">=10" @@ -11570,8 +12910,9 @@ }, "node_modules/mochawesome": { "version": "7.1.3", + "resolved": "https://registry.npmjs.org/mochawesome/-/mochawesome-7.1.3.tgz", + "integrity": "sha512-Vkb3jR5GZ1cXohMQQ73H3cZz7RoxGjjUo0G5hu0jLaW+0FdUxUwg3Cj29bqQdh0rFcnyV06pWmqmi5eBPnEuNQ==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.2", "diff": "^5.0.0", @@ -11590,8 +12931,9 @@ }, "node_modules/mochawesome-report-generator": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mochawesome-report-generator/-/mochawesome-report-generator-6.2.0.tgz", + "integrity": "sha512-Ghw8JhQFizF0Vjbtp9B0i//+BOkV5OWcQCPpbO0NGOoxV33o+gKDYU0Pr2pGxkIHnqZ+g5mYiXF7GMNgAcDpSg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.2", "dateformat": "^4.5.1", @@ -11612,8 +12954,9 @@ }, "node_modules/mochawesome-report-generator/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -11626,8 +12969,9 @@ }, "node_modules/mochawesome-report-generator/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11641,8 +12985,9 @@ }, "node_modules/mochawesome-report-generator/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -11652,13 +12997,15 @@ }, "node_modules/mochawesome-report-generator/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/mochawesome-report-generator/node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -11670,16 +13017,18 @@ }, "node_modules/mochawesome-report-generator/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/mochawesome-report-generator/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11689,8 +13038,9 @@ }, "node_modules/mochawesome/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -11703,8 +13053,9 @@ }, "node_modules/mochawesome/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11718,8 +13069,9 @@ }, "node_modules/mochawesome/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -11729,21 +13081,24 @@ }, "node_modules/mochawesome/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/mochawesome/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/mochawesome/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11753,20 +13108,23 @@ }, "node_modules/moment": { "version": "2.29.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==", "engines": { "node": "*" } }, "node_modules/ms": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -11777,13 +13135,15 @@ }, "node_modules/mute-stream": { "version": "0.0.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -11793,13 +13153,15 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "node_modules/needle": { "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "debug": "^3.2.6", @@ -11815,8 +13177,9 @@ }, "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, - "license": "MIT", "optional": true, "dependencies": { "ms": "^2.1.1" @@ -11824,20 +13187,23 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/ng-qrcode": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ng-qrcode/-/ng-qrcode-7.0.0.tgz", + "integrity": "sha512-Mx7nf8rtGMVYxGe2qfy8/JNiCnxKD7uFsqpP2Hm5eJSQrOEapQl9FR0yuK0I4MMQorJ7s8mZZDxmszQiH8R2Kg==", "dependencies": { "qrcode": "^1.5.0", "tslib": "^2.4.0" @@ -11849,7 +13215,8 @@ }, "node_modules/ngx-color": { "version": "7.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ngx-color/-/ngx-color-7.3.3.tgz", + "integrity": "sha512-RyMIFMC5/aYYD/jkfStOUjr3gQfTGhgiiMxuZEfxt2o4GYmb3C/06C1o0S6Mj9qHAcKlG6soioq2MzdhtIswHw==", "dependencies": { "@ctrl/tinycolor": "^3.4.0", "material-colors": "^1.2.6", @@ -11862,7 +13229,8 @@ }, "node_modules/ngx-quicklink": { "version": "0.2.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ngx-quicklink/-/ngx-quicklink-0.2.7.tgz", + "integrity": "sha512-5ZSUCu79dTqLNqDTsXDzofaSjB1ddOxfSMUVR4gmg0mDI2M/6G/ASgs9tVM2LoR8on3wp2ExLGHOHvzg7qWkRA==", "dependencies": { "tslib": "^2.0.0" }, @@ -11873,9 +13241,10 @@ }, "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, - "license": "MIT", "optional": true, "os": [ "!win32" @@ -11887,21 +13256,24 @@ }, "node_modules/node-addon-api": { "version": "3.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": 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, - "license": "(BSD-3-Clause OR GPL-2.0)", "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, - "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", @@ -11922,9 +13294,10 @@ } }, "node_modules/node-gyp-build": { - "version": "4.4.0", + "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, - "license": "MIT", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -11933,8 +13306,9 @@ }, "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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11942,8 +13316,9 @@ }, "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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11961,8 +13336,9 @@ }, "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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -11972,13 +13348,15 @@ }, "node_modules/node-releases": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "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, - "license": "ISC", "dependencies": { "abbrev": "1" }, @@ -11991,8 +13369,9 @@ }, "node_modules/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, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^5.0.0", "is-core-module": "^2.8.1", @@ -12005,37 +13384,42 @@ }, "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-range": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-selector": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==", + "dev": true }, "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, - "license": "ISC", "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, - "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -12045,13 +13429,15 @@ }, "node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "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, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "semver": "^7.3.5", @@ -12062,9 +13448,10 @@ } }, "node_modules/npm-packlist": { - "version": "5.1.0", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", + "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", @@ -12080,8 +13467,9 @@ }, "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, - "license": "ISC", "dependencies": { "npm-install-checks": "^5.0.0", "npm-normalize-package-bin": "^1.0.1", @@ -12094,8 +13482,9 @@ }, "node_modules/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, - "license": "ISC", "dependencies": { "make-fetch-happen": "^10.0.6", "minipass": "^3.1.6", @@ -12111,16 +13500,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/npm-registry-fetch/node_modules/cacache": { "version": "16.1.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", + "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -12147,8 +13538,9 @@ }, "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, - "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -12159,9 +13551,10 @@ } }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "10.1.7", + "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, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -12186,8 +13579,9 @@ }, "node_modules/npm-registry-fetch/node_modules/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, - "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -12202,8 +13596,9 @@ }, "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, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -12215,8 +13610,9 @@ }, "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, - "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -12226,8 +13622,9 @@ }, "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, - "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -12240,8 +13637,9 @@ }, "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, - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -12251,13 +13649,15 @@ }, "node_modules/num2fraction": { "version": "1.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "dev": true }, "node_modules/nx": { "version": "13.1.3", + "resolved": "https://registry.npmjs.org/nx/-/nx-13.1.3.tgz", + "integrity": "sha512-clM0NQhQKYkqcNz2E3uYRMLwhp2L/9dBhJhQi9XBX4IAyA2gWAomhRIlLm5Xxg3g4h1xwSpP3eJ5t89VikY8Pw==", "dev": true, - "license": "MIT", "dependencies": { "@nrwl/cli": "*" }, @@ -12267,39 +13667,44 @@ }, "node_modules/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, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/object-assign": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "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, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -12315,13 +13720,15 @@ }, "node_modules/obuf": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -12331,24 +13738,27 @@ }, "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, - "license": "MIT", "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, - "license": "ISC", "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, - "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -12361,8 +13771,9 @@ }, "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, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -12377,16 +13788,18 @@ }, "node_modules/opener": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, - "license": "(WTFPL OR MIT)", "bin": { "opener": "bin/opener-bin.js" } }, "node_modules/optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -12401,8 +13814,9 @@ }, "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, - "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -12423,8 +13837,9 @@ }, "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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12437,8 +13852,9 @@ }, "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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12452,8 +13868,9 @@ }, "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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12463,21 +13880,24 @@ }, "node_modules/ora/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12487,20 +13907,23 @@ }, "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/ospath": { "version": "1.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true }, "node_modules/p-limit": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { "p-try": "^2.0.0" }, @@ -12513,7 +13936,8 @@ }, "node_modules/p-locate": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dependencies": { "p-limit": "^2.2.0" }, @@ -12523,8 +13947,9 @@ }, "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, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -12537,8 +13962,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -12549,23 +13975,26 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/p-try": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "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, - "license": "ISC", "dependencies": { "@npmcli/git": "^3.0.0", "@npmcli/installed-package-contents": "^1.0.7", @@ -12598,13 +14027,15 @@ }, "node_modules/pako": { "version": "1.0.11", - "dev": true, - "license": "(MIT AND Zlib)" + "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, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -12614,8 +14045,9 @@ }, "node_modules/parse-entities": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dev": true, - "license": "MIT", "dependencies": { "character-entities": "^1.0.0", "character-entities-legacy": "^1.0.0", @@ -12631,8 +14063,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -12648,21 +14081,24 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/parse5": { "version": "5.1.1", - "license": "MIT", + "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, - "license": "MIT", "dependencies": { "parse5": "^6.0.1", "parse5-sax-parser": "^6.0.1" @@ -12670,108 +14106,125 @@ }, "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "parse5": "^6.0.1" } }, "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "parse5": "^6.0.1" } }, "node_modules/parse5-sax-parser/node_modules/parse5": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/path-exists": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-is-inside": { "version": "1.0.2", - "dev": true, - "license": "(WTFPL OR MIT)" + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/pend": { "version": "1.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true }, "node_modules/performance-now": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true }, "node_modules/picocolors": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -12781,24 +14234,27 @@ }, "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pinkie": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pinkie-promise": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, - "license": "MIT", "dependencies": { "pinkie": "^2.0.0" }, @@ -12808,8 +14264,9 @@ }, "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, - "license": "MIT", "dependencies": { "eventemitter-asyncresource": "^1.0.0", "hdr-histogram-js": "^2.0.1", @@ -12821,8 +14278,9 @@ }, "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, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -12832,13 +14290,16 @@ }, "node_modules/pngjs": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", "engines": { "node": ">=10.13.0" } }, "node_modules/postcss": { "version": "8.4.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", + "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", "dev": true, "funding": [ { @@ -12850,7 +14311,6 @@ "url": "https://tidelift.com/funding/github/npm/postcss" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.3", "picocolors": "^1.0.0", @@ -12862,8 +14322,9 @@ }, "node_modules/postcss-attribute-case-insensitive": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.1.tgz", + "integrity": "sha512-wrt2VndqSLJpyBRNz9OmJcgnhI9MaongeWgapdBuUMu2a/KNJ8SENesG4SdiTnQwGO9b1VKbTWYAfCPeokLqZQ==", "dev": true, - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -12880,8 +14341,9 @@ }, "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, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12894,8 +14356,9 @@ }, "node_modules/postcss-color-functional-notation": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz", + "integrity": "sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12912,8 +14375,9 @@ }, "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, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12930,8 +14394,9 @@ }, "node_modules/postcss-color-rebeccapurple": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.0.tgz", + "integrity": "sha512-1jtE5AKnZcKq4pjOrltFHcbEM2/IvtbD1OdhZ/wqds18//bh0UmQkffcCkzDJU+/vGodfIsVQeKn+45CJvX9Bw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12948,8 +14413,9 @@ }, "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, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12966,8 +14432,9 @@ }, "node_modules/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, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12984,8 +14451,9 @@ }, "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, - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -13002,8 +14470,9 @@ }, "node_modules/postcss-dir-pseudo-class": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", + "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -13016,8 +14485,9 @@ }, "node_modules/postcss-double-position-gradients": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", + "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -13031,8 +14501,9 @@ }, "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, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13045,8 +14516,9 @@ }, "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, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -13059,8 +14531,9 @@ }, "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, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -13073,16 +14546,18 @@ }, "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, - "license": "MIT", "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/postcss-gap-properties": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", + "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", "dev": true, - "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -13092,8 +14567,9 @@ }, "node_modules/postcss-html": { "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", "dev": true, - "license": "MIT", "dependencies": { "htmlparser2": "^3.10.0" }, @@ -13104,8 +14580,9 @@ }, "node_modules/postcss-image-set-function": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", + "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13118,8 +14595,9 @@ }, "node_modules/postcss-import": { "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", "dev": true, - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -13134,16 +14612,18 @@ }, "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, - "license": "MIT", "peerDependencies": { "postcss": "^8.0.0" } }, "node_modules/postcss-lab-function": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz", + "integrity": "sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -13161,8 +14641,9 @@ }, "node_modules/postcss-less": { "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", "dev": true, - "license": "MIT", "dependencies": { "postcss": "^7.0.14" }, @@ -13172,13 +14653,15 @@ }, "node_modules/postcss-less/node_modules/picocolors": { "version": "0.2.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "node_modules/postcss-less/node_modules/postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "license": "MIT", "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -13193,16 +14676,18 @@ }, "node_modules/postcss-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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/postcss-loader": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, - "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", "klona": "^2.0.5", @@ -13222,8 +14707,9 @@ }, "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, - "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -13233,8 +14719,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -13244,13 +14731,15 @@ }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true }, "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, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -13260,8 +14749,9 @@ }, "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, - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -13276,8 +14766,9 @@ }, "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, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -13290,8 +14781,9 @@ }, "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, - "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -13303,9 +14795,10 @@ } }, "node_modules/postcss-nesting": { - "version": "10.1.8", + "version": "10.1.10", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", + "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -13318,11 +14811,13 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "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": [ { @@ -13334,15 +14829,15 @@ "url": "https://liberapay.com/mrcgrtz" } ], - "license": "MIT", "engines": { "node": "^12 || ^14 || >=16" } }, "node_modules/postcss-overflow-shorthand": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", + "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", "dev": true, - "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -13352,16 +14847,18 @@ }, "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, - "license": "MIT", "peerDependencies": { "postcss": "^8" } }, "node_modules/postcss-place": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", + "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13374,8 +14871,9 @@ }, "node_modules/postcss-preset-env": { "version": "7.5.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.5.0.tgz", + "integrity": "sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==", "dev": true, - "license": "CC0-1.0", "dependencies": { "@csstools/postcss-color-function": "^1.1.0", "@csstools/postcss-font-format-keywords": "^1.0.0", @@ -13435,9 +14933,10 @@ } }, "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.4", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.5.tgz", + "integrity": "sha512-nSGKGScwFTaaV8Cyi27W9FegX3l3b7tmNxujxmykI/j3++cBAiq8fTUAU3ZK0s2aneN2T8cTUvKdNedzp3JIEA==", "dev": true, - "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -13449,26 +14948,29 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "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, - "license": "MIT", "peerDependencies": { "postcss": "^8.0.3" } }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", + "dev": true }, "node_modules/postcss-safe-parser": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", "dev": true, - "license": "MIT", "dependencies": { "postcss": "^7.0.26" }, @@ -13478,13 +14980,15 @@ }, "node_modules/postcss-safe-parser/node_modules/picocolors": { "version": "0.2.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "node_modules/postcss-safe-parser/node_modules/postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "license": "MIT", "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -13499,16 +15003,18 @@ }, "node_modules/postcss-safe-parser/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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/postcss-sass": { "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", "dev": true, - "license": "MIT", "dependencies": { "gonzales-pe": "^4.3.0", "postcss": "^7.0.21" @@ -13516,13 +15022,15 @@ }, "node_modules/postcss-sass/node_modules/picocolors": { "version": "0.2.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "node_modules/postcss-sass/node_modules/postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "license": "MIT", "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -13537,16 +15045,18 @@ }, "node_modules/postcss-sass/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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/postcss-scss": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", "dev": true, - "license": "MIT", "dependencies": { "postcss": "^7.0.6" }, @@ -13556,13 +15066,15 @@ }, "node_modules/postcss-scss/node_modules/picocolors": { "version": "0.2.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "node_modules/postcss-scss/node_modules/postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "license": "MIT", "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -13577,16 +15089,18 @@ }, "node_modules/postcss-scss/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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/postcss-selector-not": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", + "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" }, @@ -13596,8 +15110,9 @@ }, "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, - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -13608,29 +15123,33 @@ }, "node_modules/postcss-syntax": { "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", "dev": true, - "license": "MIT", "peerDependencies": { "postcss": ">=5.0.0" } }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -13643,8 +15162,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=6" }, @@ -13654,26 +15174,30 @@ }, "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, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -13684,8 +15208,9 @@ }, "node_modules/prop-types": { "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, - "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -13694,8 +15219,9 @@ }, "node_modules/protobufjs": { "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", "hasInstallScript": true, - "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -13718,8 +15244,9 @@ }, "node_modules/protractor": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", "dev": true, - "license": "MIT", "dependencies": { "@types/q": "^0.0.32", "@types/selenium-webdriver": "^3.0.0", @@ -13747,24 +15274,27 @@ }, "node_modules/protractor/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/protractor/node_modules/ansi-styles": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/protractor/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -13772,8 +15302,9 @@ }, "node_modules/protractor/node_modules/chalk": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -13787,8 +15318,9 @@ }, "node_modules/protractor/node_modules/cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -13797,16 +15329,18 @@ }, "node_modules/protractor/node_modules/cliui/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/protractor/node_modules/cliui/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, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13816,8 +15350,9 @@ }, "node_modules/protractor/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13827,13 +15362,15 @@ }, "node_modules/protractor/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/protractor/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13851,8 +15388,9 @@ }, "node_modules/protractor/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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13862,24 +15400,27 @@ }, "node_modules/protractor/node_modules/source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/protractor/node_modules/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, - "license": "MIT", "dependencies": { "source-map": "^0.5.6" } }, "node_modules/protractor/node_modules/strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -13889,16 +15430,18 @@ }, "node_modules/protractor/node_modules/supports-color": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/protractor/node_modules/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -13910,16 +15453,18 @@ }, "node_modules/protractor/node_modules/wrap-ansi/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/protractor/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13932,8 +15477,9 @@ }, "node_modules/protractor/node_modules/wrap-ansi/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, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13943,13 +15489,15 @@ }, "node_modules/protractor/node_modules/y18n": { "version": "4.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "node_modules/protractor/node_modules/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, - "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -13969,8 +15517,9 @@ }, "node_modules/protractor/node_modules/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, - "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -13981,8 +15530,9 @@ }, "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, - "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -13993,32 +15543,37 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/proxy-from-env": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true }, "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, - "license": "MIT", "optional": true }, "node_modules/psl": { - "version": "1.8.0", - "dev": true, - "license": "MIT" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true }, "node_modules/pump": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -14026,16 +15581,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/q": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -14043,15 +15600,17 @@ }, "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, - "license": "MIT", "engines": { "node": ">=0.9" } }, "node_modules/qrcode": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==", "dependencies": { "dijkstrajs": "^1.0.1", "encode-utf8": "^1.0.3", @@ -14067,7 +15626,8 @@ }, "node_modules/qrcode/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -14080,7 +15640,8 @@ }, "node_modules/qrcode/node_modules/cliui": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -14089,7 +15650,8 @@ }, "node_modules/qrcode/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -14099,11 +15661,13 @@ }, "node_modules/qrcode/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/qrcode/node_modules/wrap-ansi": { "version": "6.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -14115,11 +15679,13 @@ }, "node_modules/qrcode/node_modules/y18n": { "version": "4.0.3", - "license": "ISC" + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "node_modules/qrcode/node_modules/yargs": { "version": "15.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -14139,7 +15705,8 @@ }, "node_modules/qrcode/node_modules/yargs-parser": { "version": "18.1.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -14150,14 +15717,17 @@ }, "node_modules/qs": { "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } }, "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": [ { @@ -14172,37 +15742,40 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/quick-lru": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -14215,21 +15788,24 @@ }, "node_modules/react-is": { "version": "16.13.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true }, "node_modules/read-cache": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^2.3.0" } }, "node_modules/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, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", @@ -14242,8 +15818,9 @@ }, "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, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^2.3.0", "npm-normalize-package-bin": "^1.0.1" @@ -14254,8 +15831,9 @@ }, "node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -14268,8 +15846,9 @@ }, "node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -14284,21 +15863,24 @@ }, "node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -14308,24 +15890,27 @@ }, "node_modules/read-pkg/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "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, - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -14337,8 +15922,9 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -14348,8 +15934,9 @@ }, "node_modules/redent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -14360,18 +15947,21 @@ }, "node_modules/reflect-metadata": { "version": "0.1.13", - "dev": true, - "license": "Apache-2.0" + "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", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "node_modules/regenerate-unicode-properties": { "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "dev": true, - "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -14381,26 +15971,30 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.9", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regex-parser": { "version": "2.2.11", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true }, "node_modules/regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -14409,9 +16003,10 @@ } }, "node_modules/regexpu-core": { - "version": "5.0.1", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", "dev": true, - "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.0.1", @@ -14426,13 +16021,15 @@ }, "node_modules/regjsgen": { "version": "0.6.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true }, "node_modules/regjsparser": { "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -14442,6 +16039,8 @@ }, "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" @@ -14449,8 +16048,9 @@ }, "node_modules/remark": { "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", "dev": true, - "license": "MIT", "dependencies": { "remark-parse": "^9.0.0", "remark-stringify": "^9.0.0", @@ -14463,8 +16063,9 @@ }, "node_modules/remark-parse": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", "dev": true, - "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^0.8.0" }, @@ -14475,8 +16076,9 @@ }, "node_modules/remark-stringify": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "dev": true, - "license": "MIT", "dependencies": { "mdast-util-to-markdown": "^0.6.0" }, @@ -14487,16 +16089,19 @@ }, "node_modules/repeat-string": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/request": { "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, - "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -14525,16 +16130,18 @@ }, "node_modules/request-progress": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, - "license": "MIT", "dependencies": { "throttleit": "^1.0.0" } }, "node_modules/request/node_modules/http-signature": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -14547,8 +16154,9 @@ }, "node_modules/request/node_modules/jsprim": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -14561,40 +16169,47 @@ }, "node_modules/request/node_modules/uuid": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, - "license": "MIT", "bin": { "uuid": "bin/uuid" } }, "node_modules/require-directory": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "node_modules/requires-port": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "is-core-module": "^2.8.1", "path-parse": "^1.0.7", @@ -14609,16 +16224,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -14632,8 +16249,9 @@ }, "node_modules/resolve-url-loader/node_modules/loader-utils": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -14645,16 +16263,18 @@ }, "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, - "license": "BSD-3-Clause", "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, - "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -14665,16 +16285,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -14682,13 +16304,15 @@ }, "node_modules/rfdc": { "version": "1.3.0", - "dev": true, - "license": "MIT" + "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, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -14701,8 +16325,9 @@ }, "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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14710,8 +16335,9 @@ }, "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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14729,8 +16355,9 @@ }, "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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14740,14 +16367,17 @@ }, "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, - "license": "MIT", "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": [ { @@ -14763,32 +16393,35 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rxjs": { "version": "7.5.5", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/safer-buffer": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/sass": { "version": "1.51.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz", + "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -14803,8 +16436,9 @@ }, "node_modules/sass-loader": { "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", "dev": true, - "license": "MIT", "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" @@ -14840,6 +16474,8 @@ }, "node_modules/saucelabs": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", "dev": true, "dependencies": { "https-proxy-agent": "^2.2.1" @@ -14850,8 +16486,9 @@ }, "node_modules/saucelabs/node_modules/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, - "license": "MIT", "dependencies": { "es6-promisify": "^5.0.0" }, @@ -14861,16 +16498,18 @@ }, "node_modules/saucelabs/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/saucelabs/node_modules/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, - "license": "MIT", "dependencies": { "agent-base": "^4.3.0", "debug": "^3.1.0" @@ -14881,13 +16520,15 @@ }, "node_modules/sax": { "version": "1.2.4", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.5", "ajv": "^6.12.4", @@ -14903,8 +16544,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14918,26 +16560,30 @@ }, "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, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/schema-utils/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true }, "node_modules/selenium-webdriver": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "jszip": "^3.1.3", "rimraf": "^2.5.4", @@ -14950,8 +16596,9 @@ }, "node_modules/selenium-webdriver/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14959,8 +16606,9 @@ }, "node_modules/selenium-webdriver/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14978,8 +16626,9 @@ }, "node_modules/selenium-webdriver/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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14989,8 +16638,9 @@ }, "node_modules/selenium-webdriver/node_modules/rimraf": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -15000,8 +16650,9 @@ }, "node_modules/selenium-webdriver/node_modules/tmp": { "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.1" }, @@ -15011,8 +16662,9 @@ }, "node_modules/selfsigned": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, - "license": "MIT", "dependencies": { "node-forge": "^1" }, @@ -15022,8 +16674,9 @@ }, "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, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -15036,24 +16689,27 @@ }, "node_modules/semver-dsl": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^5.3.0" } }, "node_modules/semver-dsl/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "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, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -15063,8 +16719,9 @@ }, "node_modules/send": { "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -15086,21 +16743,24 @@ }, "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, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -15110,29 +16770,33 @@ }, "node_modules/send/node_modules/ms": { "version": "2.1.3", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "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, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/serve-index": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -15148,24 +16812,27 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -15178,23 +16845,27 @@ }, "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", - "dev": true, - "license": "ISC" + "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", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -15207,22 +16878,26 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/setimmediate": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "node_modules/setprototypeof": { "version": "1.2.0", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -15232,8 +16907,9 @@ }, "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, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -15243,16 +16919,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -15264,21 +16942,24 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "dev": true, - "license": "ISC" + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -15290,8 +16971,9 @@ }, "node_modules/slice-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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -15304,8 +16986,9 @@ }, "node_modules/slice-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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -15315,13 +16998,15 @@ }, "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "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, - "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -15329,8 +17014,9 @@ }, "node_modules/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, - "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -15345,13 +17031,15 @@ }, "node_modules/socket.io-adapter": { "version": "2.4.0", - "dev": true, - "license": "MIT" + "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.0.4", + "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, - "license": "MIT", "dependencies": { "@types/component-emitter": "^1.2.10", "component-emitter": "~1.3.0", @@ -15363,8 +17051,9 @@ }, "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, - "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -15373,8 +17062,9 @@ }, "node_modules/socks": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, - "license": "MIT", "dependencies": { "ip": "^1.1.5", "smart-buffer": "^4.2.0" @@ -15386,8 +17076,9 @@ }, "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, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -15399,24 +17090,27 @@ }, "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, - "license": "BSD-3-Clause", "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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-loader": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", + "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", "dev": true, - "license": "MIT", "dependencies": { "abab": "^2.0.5", "iconv-lite": "^0.6.3", @@ -15435,8 +17129,9 @@ }, "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, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -15446,8 +17141,10 @@ }, "node_modules/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==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, - "license": "MIT", "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -15455,8 +17152,9 @@ }, "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, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -15464,21 +17162,24 @@ }, "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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "dev": true, - "license": "MIT" + "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, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -15486,13 +17187,15 @@ }, "node_modules/spdx-exceptions": { "version": "2.3.0", - "dev": true, - "license": "CC-BY-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, - "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -15500,13 +17203,15 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.11", - "dev": true, - "license": "CC0-1.0" + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "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, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -15520,8 +17225,9 @@ }, "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, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -15533,21 +17239,24 @@ }, "node_modules/specificity": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", "dev": true, - "license": "MIT", "bin": { "specificity": "bin/specificity" } }, "node_modules/sprintf-js": { "version": "1.1.2", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true }, "node_modules/sshpk": { "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, - "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -15570,8 +17279,9 @@ }, "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, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -15581,16 +17291,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/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, - "license": "MIT", "dependencies": { "date-format": "^4.0.10", "debug": "^4.3.4", @@ -15602,8 +17314,9 @@ }, "node_modules/streamroller/node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -15615,14 +17328,17 @@ }, "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, - "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -15637,12 +17353,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/string-width": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -15654,7 +17370,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -15664,24 +17381,27 @@ }, "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "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, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-indent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, - "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -15691,8 +17411,9 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -15702,13 +17423,15 @@ }, "node_modules/style-search": { "version": "0.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "dev": true }, "node_modules/stylelint": { "version": "13.13.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", + "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", "dev": true, - "license": "MIT", "dependencies": { "@stylelint/postcss-css-in-js": "^0.37.2", "@stylelint/postcss-markdown": "^0.36.2", @@ -15772,16 +17495,18 @@ }, "node_modules/stylelint-config-recommended": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", + "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", "dev": true, - "license": "MIT", "peerDependencies": { "stylelint": "^13.13.0" } }, "node_modules/stylelint-config-standard": { "version": "22.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-22.0.0.tgz", + "integrity": "sha512-uQVNi87SHjqTm8+4NIP5NMAyY/arXrBgimaaT7skvRfE9u3JKXRK9KBkbr4pVmeciuCcs64kAdjlxfq6Rur7Hw==", "dev": true, - "license": "MIT", "dependencies": { "stylelint-config-recommended": "^5.0.0" }, @@ -15791,8 +17516,9 @@ }, "node_modules/stylelint-scss": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.21.0.tgz", + "integrity": "sha512-CMI2wSHL+XVlNExpauy/+DbUcB/oUZLARDtMIXkpV/5yd8nthzylYd1cdHeDMJVBXeYHldsnebUX6MoV5zPW4A==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.17.15", "postcss-media-query-parser": "^0.2.3", @@ -15809,8 +17535,9 @@ }, "node_modules/stylelint/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -15823,8 +17550,9 @@ }, "node_modules/stylelint/node_modules/autoprefixer": { "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, - "license": "MIT", "dependencies": { "browserslist": "^4.12.0", "caniuse-lite": "^1.0.30001109", @@ -15844,13 +17572,15 @@ }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true }, "node_modules/stylelint/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -15864,8 +17594,9 @@ }, "node_modules/stylelint/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -15875,26 +17606,30 @@ }, "node_modules/stylelint/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/stylelint/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/stylelint/node_modules/picocolors": { "version": "0.2.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "node_modules/stylelint/node_modules/postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "license": "MIT", "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -15909,16 +17644,18 @@ }, "node_modules/stylelint/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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/stylelint/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -15928,8 +17665,9 @@ }, "node_modules/stylus": { "version": "0.57.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz", + "integrity": "sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==", "dev": true, - "license": "MIT", "dependencies": { "css": "^3.0.0", "debug": "^4.3.2", @@ -15947,8 +17685,9 @@ }, "node_modules/stylus-loader": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.2.0.tgz", + "integrity": "sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==", "dev": true, - "license": "MIT", "dependencies": { "fast-glob": "^3.2.7", "klona": "^2.0.4", @@ -15968,8 +17707,9 @@ }, "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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -15977,8 +17717,9 @@ }, "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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -15996,8 +17737,9 @@ }, "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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -16007,21 +17749,24 @@ }, "node_modules/sugarss": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", "dev": true, - "license": "MIT", "dependencies": { "postcss": "^7.0.2" } }, "node_modules/sugarss/node_modules/picocolors": { "version": "0.2.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "node_modules/sugarss/node_modules/postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, - "license": "MIT", "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -16036,16 +17781,18 @@ }, "node_modules/sugarss/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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "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, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -16055,8 +17802,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -16066,20 +17814,24 @@ }, "node_modules/svg-tags": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, "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, - "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/table": { "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -16093,8 +17845,9 @@ }, "node_modules/table/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -16107,8 +17860,9 @@ }, "node_modules/table/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -16118,13 +17872,15 @@ }, "node_modules/table/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -16139,16 +17895,18 @@ }, "node_modules/tapable": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tar": { "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -16163,8 +17921,9 @@ }, "node_modules/tar-stream": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -16178,21 +17937,24 @@ }, "node_modules/tcomb": { "version": "3.2.29", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-3.2.29.tgz", + "integrity": "sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ==", + "dev": true }, "node_modules/tcomb-validation": { "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tcomb-validation/-/tcomb-validation-3.4.1.tgz", + "integrity": "sha512-urVVMQOma4RXwiVCa2nM2eqrAomHROHvWPuj6UkDGz/eb5kcy0x6P0dVt6kzpUZtYMNoAqJLWmz1BPtxrtjtrA==", "dev": true, - "license": "MIT", "dependencies": { "tcomb": "^3.0.0" } }, "node_modules/terser": { "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.5.0", "commander": "^2.20.0", @@ -16208,8 +17970,9 @@ }, "node_modules/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, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", @@ -16241,8 +18004,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -16256,21 +18020,24 @@ }, "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, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -16286,13 +18053,15 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/terser/node_modules/source-map": { "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "whatwg-url": "^7.0.0" }, @@ -16302,8 +18071,9 @@ }, "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, - "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -16315,8 +18085,9 @@ }, "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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -16324,8 +18095,9 @@ }, "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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -16343,8 +18115,9 @@ }, "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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -16354,35 +18127,41 @@ }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, "node_modules/throttleit": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", + "dev": true }, "node_modules/through": { "version": "2.3.8", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true }, "node_modules/tinycolor2": { "version": "1.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", "engines": { "node": "*" } }, "node_modules/tmp": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, - "license": "MIT", "dependencies": { "rimraf": "^3.0.0" }, @@ -16392,16 +18171,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -16411,16 +18192,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/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, - "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -16431,32 +18214,36 @@ }, "node_modules/tr46": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, - "license": "MIT", "dependencies": { "punycode": "^2.1.0" } }, "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, - "license": "MIT", "bin": { "tree-kill": "cli.js" } }, "node_modules/trim-newlines": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/trough": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -16464,8 +18251,9 @@ }, "node_modules/tsconfig-paths": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -16475,8 +18263,9 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -16486,12 +18275,15 @@ }, "node_modules/tslib": { "version": "2.4.0", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/tslint": { "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", @@ -16520,8 +18312,9 @@ }, "node_modules/tslint/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, - "license": "MIT", "peer": true, "dependencies": { "balanced-match": "^1.0.0", @@ -16530,14 +18323,16 @@ }, "node_modules/tslint/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, - "license": "MIT", "peer": true }, "node_modules/tslint/node_modules/diff": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.3.1" @@ -16545,8 +18340,9 @@ }, "node_modules/tslint/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, - "license": "ISC", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -16565,8 +18361,9 @@ }, "node_modules/tslint/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, - "license": "ISC", "peer": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -16577,8 +18374,9 @@ }, "node_modules/tslint/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, - "license": "MIT", "peer": true, "dependencies": { "minimist": "^1.2.6" @@ -16589,8 +18387,9 @@ }, "node_modules/tslint/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "peer": true, "bin": { "semver": "bin/semver" @@ -16598,14 +18397,16 @@ }, "node_modules/tslint/node_modules/tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "license": "0BSD", "peer": true }, "node_modules/tslint/node_modules/tsutils": { "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "tslib": "^1.8.1" @@ -16616,8 +18417,9 @@ }, "node_modules/tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -16630,13 +18432,15 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/tunnel-agent": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -16646,30 +18450,24 @@ }, "node_modules/tv4": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", "dev": true, - "license": [ - { - "type": "Public Domain", - "url": "http://geraintluff.github.io/tv4/LICENSE.txt" - }, - { - "type": "MIT", - "url": "http://jsonary.com/LICENSE.txt" - } - ], "engines": { "node": ">= 0.8.0" } }, "node_modules/tweetnacl": { "version": "0.14.5", - "dev": true, - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -16679,8 +18477,9 @@ }, "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, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -16690,8 +18489,9 @@ }, "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, - "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -16702,21 +18502,24 @@ }, "node_modules/typed-assert": { "version": "1.0.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { - "version": "4.7.3", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -16727,6 +18530,8 @@ }, "node_modules/ua-parser-js": { "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", "dev": true, "funding": [ { @@ -16738,23 +18543,24 @@ "url": "https://paypal.me/faisalman" } ], - "license": "MIT", "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -16765,24 +18571,27 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unified": { "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", "dev": true, - "license": "MIT", "dependencies": { "bail": "^1.0.0", "extend": "^3.0.0", @@ -16798,32 +18607,36 @@ }, "node_modules/unified/node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "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, - "license": "ISC", "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, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } }, "node_modules/unist-util-find-all-after": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", "dev": true, - "license": "MIT", "dependencies": { "unist-util-is": "^4.0.0" }, @@ -16834,8 +18647,9 @@ }, "node_modules/unist-util-is": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -16843,8 +18657,9 @@ }, "node_modules/unist-util-stringify-position": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dev": true, - "license": "MIT", "dependencies": { "@types/unist": "^2.0.2" }, @@ -16855,65 +18670,100 @@ }, "node_modules/universalify": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.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, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/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, + "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, - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/uuid": { "version": "8.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache": { "version": "2.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, "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, - "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -16921,8 +18771,9 @@ }, "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, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -16932,26 +18783,29 @@ }, "node_modules/validator": { "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/vary": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "engines": { "node": ">= 0.8" } }, "node_modules/verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -16960,8 +18814,9 @@ }, "node_modules/vfile": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dev": true, - "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -16975,8 +18830,9 @@ }, "node_modules/vfile-message": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^2.0.0" @@ -16988,23 +18844,26 @@ }, "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/walkdir": { "version": "0.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz", + "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==", "engines": { "node": ">=6.0.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, - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -17015,24 +18874,27 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, "node_modules/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, - "license": "MIT", "dependencies": { "@types/selenium-webdriver": "^3.0.0", "selenium-webdriver": "^3.0.1" @@ -17043,8 +18905,9 @@ }, "node_modules/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, - "license": "MIT", "dependencies": { "adm-zip": "^0.4.9", "chalk": "^1.1.1", @@ -17067,24 +18930,27 @@ }, "node_modules/webdriver-manager/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/webdriver-manager/node_modules/ansi-styles": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/webdriver-manager/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, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -17092,8 +18958,9 @@ }, "node_modules/webdriver-manager/node_modules/chalk": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -17107,8 +18974,9 @@ }, "node_modules/webdriver-manager/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -17126,13 +18994,15 @@ }, "node_modules/webdriver-manager/node_modules/ini": { "version": "1.3.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/webdriver-manager/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, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -17142,8 +19012,9 @@ }, "node_modules/webdriver-manager/node_modules/rimraf": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -17153,16 +19024,18 @@ }, "node_modules/webdriver-manager/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/webdriver-manager/node_modules/strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -17172,21 +19045,24 @@ }, "node_modules/webdriver-manager/node_modules/supports-color": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/webidl-conversions": { "version": "4.0.2", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true }, "node_modules/webpack": { "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -17231,8 +19107,9 @@ }, "node_modules/webpack-dev-middleware": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", "dev": true, - "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.1", @@ -17253,8 +19130,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -17271,8 +19149,9 @@ }, "node_modules/webpack-dev-server": { "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", "dev": true, - "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -17320,8 +19199,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -17338,8 +19218,9 @@ }, "node_modules/webpack-dev-server/node_modules/ws": { "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -17358,8 +19239,9 @@ }, "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, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" @@ -17370,16 +19252,18 @@ }, "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "typed-assert": "^1.0.8" }, @@ -17396,10 +19280,17 @@ } } }, + "node_modules/webpack/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/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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -17413,21 +19304,24 @@ }, "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, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/webpack/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -17443,8 +19337,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -17456,16 +19351,18 @@ }, "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, - "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } }, "node_modules/whatwg-url": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, - "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -17474,8 +19371,9 @@ }, "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, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -17488,38 +19386,44 @@ }, "node_modules/which-module": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" }, "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, - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/wildcard": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true }, "node_modules/word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/workerpool": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true, - "license": "Apache-2.0", "peer": true }, "node_modules/wrap-ansi": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -17534,7 +19438,8 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -17547,7 +19452,8 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -17557,17 +19463,20 @@ }, "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -17577,8 +19486,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -17597,8 +19507,9 @@ }, "node_modules/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, - "license": "MIT", "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -17609,36 +19520,41 @@ }, "node_modules/xmlbuilder": { "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.0" } }, "node_modules/y18n": { "version": "5.0.8", - "license": "ISC", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "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, - "license": "ISC", "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, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -17654,16 +19570,18 @@ }, "node_modules/yargs-parser": { "version": "20.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.0.0.tgz", + "integrity": "sha512-8eblPHTL7ZWRkyjIZJjnGf+TijiKJSwA24svzLRVvtgoi/RZiKa9fFQTrlx0OKLnyHSdt/enrdadji6WFfESVA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "camelcase": "^6.0.0", @@ -17677,8 +19595,9 @@ }, "node_modules/yargs-unparser/node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -17689,8 +19608,9 @@ }, "node_modules/yargs-unparser/node_modules/decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -17701,8 +19621,9 @@ }, "node_modules/yargs-unparser/node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -17710,16 +19631,18 @@ }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, - "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -17727,8 +19650,9 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -17739,15 +19663,17 @@ }, "node_modules/zone.js": { "version": "0.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", + "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/zwitch": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -17757,6 +19683,8 @@ "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", @@ -17764,15 +19692,19 @@ } }, "@angular-devkit/architect": { - "version": "0.1400.2", + "version": "0.1400.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.4.tgz", + "integrity": "sha512-9tjOIRpAPuhsJ5xMVZI/C9qQUaVTF9URFrK4r/b9RO7lRsvMvweReMcOH4/8+veVSTAzAa34B6WNYvvuBZFMOg==", "dev": true, "requires": { - "@angular-devkit/core": "14.0.2", + "@angular-devkit/core": "14.0.4", "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" @@ -17780,18 +19712,22 @@ }, "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.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.0.4.tgz", + "integrity": "sha512-VoiDfyKSTBU4LDRwtY8Ga5ZBKsDxTYWNx9aDCoswalMvYREwhEi9+wEcWjF5aMKl4usr6twCPaYqDrbkHYUHqw==", "dev": true, "requires": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1400.2", - "@angular-devkit/build-webpack": "0.1400.2", - "@angular-devkit/core": "14.0.2", + "@angular-devkit/architect": "0.1400.4", + "@angular-devkit/build-webpack": "0.1400.4", + "@angular-devkit/core": "14.0.4", "@babel/core": "7.17.10", "@babel/generator": "7.17.10", "@babel/helper-annotate-as-pure": "7.16.7", @@ -17802,7 +19738,7 @@ "@babel/runtime": "7.17.9", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.0.2", + "@ngtools/webpack": "14.0.4", "ansi-colors": "4.1.1", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -17855,6 +19791,8 @@ "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" @@ -17862,6 +19800,8 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } @@ -17869,15 +19809,19 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1400.2", + "version": "0.1400.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1400.4.tgz", + "integrity": "sha512-eknabzf8lWDidOzeoV7NG3Rrfme/O2REZtranhBGKRfoRNUOCWMYcCfAF1hUEHjgw7zd4pn+3EdMVjhwpG48hA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1400.2", + "@angular-devkit/architect": "0.1400.4", "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" @@ -17885,12 +19829,16 @@ }, "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.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.4.tgz", + "integrity": "sha512-ySQnhu9KhU6vMcFE5jFD93Q2aQ/UJYRZXlvDCve11pp6Lb+llcA7H46lHlBwpxR3jKom+8U4W5vnviqU52zhcg==", "dev": true, "requires": { "ajv": "8.11.0", @@ -17902,6 +19850,8 @@ "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" @@ -17909,15 +19859,19 @@ }, "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.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.4.tgz", + "integrity": "sha512-dOi843eANcCL/tcSIAaotfLTHZTQLzRrpP2hz/le/vYMcuIfP90auvsWbQVrWbDIxWYl57Lu2UxvITT9gIarnA==", "dev": true, "requires": { - "@angular-devkit/core": "14.0.2", + "@angular-devkit/core": "14.0.4", "jsonc-parser": "3.0.0", "magic-string": "0.26.1", "ora": "5.4.1", @@ -17926,6 +19880,8 @@ "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" @@ -17933,99 +19889,109 @@ }, "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@angular-eslint/builder": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.0-alpha.3.tgz", - "integrity": "sha512-J3/Pj0erEkmRCSpVcsTWIg4riIADkfbC+Z+iGeS0cN3Ix6pyXk6XPDXoUCHBB0C55RCpeCYuJIFqJuLfEKIfZw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.0.tgz", + "integrity": "sha512-91/ZHivDD8ou/vEUsgY3nRv//2Kd0PA+JypI4jVs7nErmFtMkPAbpONn2cIqFlRgPilEm3LA78wemr7HxyxacA==", "dev": true, "requires": { "@nrwl/devkit": "13.1.3" } }, "@angular-eslint/bundled-angular-compiler": { - "version": "14.0.0-alpha.3", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.0.0.tgz", + "integrity": "sha512-/rzDy+rVfpVOSAVycYsD15xbDrU54aayI94OT9Rxxl9J4Jp/Hep2FY7JrjvfqpS097qVIgJltEP9xu9OopOz7g==", "dev": true }, "@angular-eslint/eslint-plugin": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.0-alpha.3.tgz", - "integrity": "sha512-vGKiKoWTZITcj6VMdfEhRpQOgzYX53QXqEfqq1deEybNxJsmSHD5i7niLw6l3AgK8o18j2HZfMyz39MItiQ/Rg==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.0.tgz", + "integrity": "sha512-A4oCWgOwiP9aYuuMOyF1iLcjZONMjxuabG+FICLA7LosjIIgIf0Cktp74Ii4itBr2Ka+E5+sCvFBce8r2Cmosg==", "dev": true, "requires": { - "@angular-eslint/utils": "14.0.0-alpha.3", - "@typescript-eslint/experimental-utils": "5.27.1" + "@angular-eslint/utils": "14.0.0", + "@typescript-eslint/utils": "5.29.0" } }, "@angular-eslint/eslint-plugin-template": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.0-alpha.3.tgz", - "integrity": "sha512-AoOyyLOpRZPph35wwBI1BOmBaI5VIBOdxWmOlCZsP2H5iaBiF+wQTARUu8swQVLKZ2arKKSP0ufAfc5E2FBcZA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.0.tgz", + "integrity": "sha512-h+3eL2ovMiBn5EG0DH8/2ikolvUUjSGJFbZenlJwEPGGEHaJoYw6205ZMoRNxKResEbPgEoY1UK+paO8x14z6w==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", - "@typescript-eslint/experimental-utils": "5.27.1", + "@angular-eslint/bundled-angular-compiler": "14.0.0", + "@typescript-eslint/utils": "5.29.0", "aria-query": "5.0.0", "axobject-query": "3.0.1" } }, "@angular-eslint/schematics": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.0-alpha.3.tgz", - "integrity": "sha512-swBkQ4/9itzEPTvPbBw1H02pMrZIPly5d6fPUh71+xhPTTBvjFm525AyVMhg6N6uk9ai3mDgWyek8eaz7NHZgA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.0.tgz", + "integrity": "sha512-4lOpDECUgcSdlBsMeIq9Sx0FkIZDQZPfmtwNHDl7P7GCA4voqS3GgSX7/azwYrXFchPteQeHrXxB4B8n8AByig==", "dev": true, "requires": { - "@angular-eslint/eslint-plugin": "14.0.0-alpha.3", - "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.3", + "@angular-eslint/eslint-plugin": "14.0.0", + "@angular-eslint/eslint-plugin-template": "14.0.0", "ignore": "5.2.0", "strip-json-comments": "3.1.1", "tmp": "0.2.1" } }, "@angular-eslint/template-parser": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.0-alpha.3.tgz", - "integrity": "sha512-twCZoBFuAgSZK6lKiNRdD738f99OSaQEaykf03QJAjo501Ib/q85cP2D7ZQzk03nT+xSODqUEaEPnuu/kE59nQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.0.tgz", + "integrity": "sha512-i0ec0m0hezabVYH9MruxIxLyoQp60VQAy0QvsQlYB6q3nFuJnx9MT+iSN+Now8AhWh2yqbnCxxnhhLFushwBFQ==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", + "@angular-eslint/bundled-angular-compiler": "14.0.0", "eslint-scope": "^5.1.0" } }, "@angular-eslint/utils": { - "version": "14.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.0-alpha.3.tgz", - "integrity": "sha512-py2oFSDdiY/QJmBKg0wbbO4Caf18uioHAivMXdXfIyFHM6XGoiI1DBUUCmNrCq6sbYanD1oO0BtRFD+Gv6y+vg==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.0.tgz", + "integrity": "sha512-gK8gDzo2MbMXYDqsWqE28rGkqPMMhPG4mIWp+zMsuWYG7oiUlD2TibWerYQCfGa9K2FTF97UGmI21Ckqsgex7w==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", - "@typescript-eslint/experimental-utils": "5.27.1" + "@angular-eslint/bundled-angular-compiler": "14.0.0", + "@typescript-eslint/utils": "5.29.0" } }, "@angular/animations": { - "version": "14.0.2", + "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.2", + "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" } }, "@angular/cli": { - "version": "14.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.4.tgz", + "integrity": "sha512-hb6mJk6/vJwHCuMaGResQh9aXgoSyfrJ/WuFgLcPspdFRkm4EQcTSx8DwrRo7YawuCa12UJdPoK0dASXYN6JHA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1400.2", - "@angular-devkit/core": "14.0.2", - "@angular-devkit/schematics": "14.0.2", - "@schematics/angular": "14.0.2", + "@angular-devkit/architect": "0.1400.4", + "@angular-devkit/core": "14.0.4", + "@angular-devkit/schematics": "14.0.4", + "@schematics/angular": "14.0.4", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.4", @@ -18045,19 +20011,25 @@ } }, "@angular/common": { - "version": "14.0.2", + "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.2", + "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.2", + "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", @@ -18073,74 +20045,100 @@ } }, "@angular/core": { - "version": "14.0.2", + "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.2", + "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/language-service": { - "version": "14.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.0.4.tgz", + "integrity": "sha512-5I2k1/EJSBBA3D5jP8Q+Z9paI62t7UUi3NO3o1nJkc9d6/01FGKgilbouSNhdLI6Rn0FeBOwF2h00H9NQ+XHTw==", "dev": true }, "@angular/material": { - "version": "14.0.2", + "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/material-moment-adapter": { - "version": "14.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-14.0.4.tgz", + "integrity": "sha512-RqBtLKzwqO2fRAlwURVfVSXZQ3Qks1k3G5lj4AOZpGnAPBw8DGHI/zroBD/3QzPer8rUsoiVVwdQSXpmWf1mlg==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "14.0.2", + "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.2", + "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.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.4.tgz", + "integrity": "sha512-aqtOjIjVNtWbpedDdni0yGfGR6sEb8S3jJB9jf43ththmHKxAlW7PKP2NgEmx0uJ2xY2iGET7Gkpl8RBwvoHgQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/service-worker": { - "version": "14.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-14.0.4.tgz", + "integrity": "sha512-dJzsDTQg6LRNK/wJPi06EdfKCSnvil3DD6HNHDMHNxLE4J5NQmZdd6bCBEkXTOchqpOUjae4ej/ZelEE0te3Bg==", "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 }, "@babel/code-frame": { - "version": "7.16.7", + "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.16.7" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.18.5", + "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", @@ -18162,12 +20160,16 @@ "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", @@ -18177,58 +20179,94 @@ }, "@babel/helper-annotate-as-pure": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", + "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helper-compilation-targets": { - "version": "7.18.2", + "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.17.10", - "@babel/helper-validator-option": "^7.16.7", + "@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.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", + "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "dependencies": { + "@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-create-regexp-features-plugin": { - "version": "7.17.12", + "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.16.7", - "regexpu-core": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "dependencies": { + "@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-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", @@ -18243,174 +20281,286 @@ "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.2", + "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.16.7", + "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.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-function-name": { - "version": "7.17.9", + "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.16.7", - "@babel/types": "^7.17.0" + "@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.16.7", + "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.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", + "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-imports": { - "version": "7.16.7", + "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.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.18.0", + "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.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" + "@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.16.7", + "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.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", + "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", + "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-wrap-function": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "dependencies": { + "@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-replace-supers": { - "version": "7.18.2", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", + "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helper-simple-access": { - "version": "7.18.2", + "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.2" + "@babel/types": "^7.18.6" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", + "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", + "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.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-validator-identifier": { - "version": "7.16.7", + "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.16.7", + "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.16.8", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", + "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-function-name": "^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/helpers": { - "version": "7.18.2", + "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.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" + "@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.17.12", + "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.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.18.5", + "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.17.12", + "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.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", + "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.6" } }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", @@ -18419,126 +20569,167 @@ } }, "@babel/plugin-proposal-class-properties": { - "version": "7.17.12", + "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.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@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.0", + "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.0", - "@babel/helper-plugin-utils": "^7.17.12", + "@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.16.7", + "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.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", + "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.17.12", + "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.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", + "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.17.12", + "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.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", + "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.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", + "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-plugin-utils": "^7.17.12", + "@babel/compat-data": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.17.12" + "@babel/plugin-transform-parameters": "^7.18.6" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", + "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.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", + "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.17.12", + "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.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@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.17.12", + "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.16.7", - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12", + "@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" + }, + "dependencies": { + "@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/plugin-proposal-unicode-property-regex": { - "version": "7.17.12", + "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.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@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" @@ -18546,6 +20737,8 @@ }, "@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" @@ -18553,6 +20746,8 @@ }, "@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" @@ -18560,6 +20755,8 @@ }, "@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" @@ -18567,6 +20764,8 @@ }, "@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" @@ -18574,6 +20773,8 @@ }, "@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" @@ -18581,6 +20782,8 @@ }, "@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" @@ -18588,6 +20791,8 @@ }, "@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" @@ -18595,6 +20800,8 @@ }, "@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" @@ -18602,6 +20809,8 @@ }, "@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" @@ -18609,6 +20818,8 @@ }, "@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" @@ -18616,6 +20827,8 @@ }, "@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" @@ -18623,6 +20836,8 @@ }, "@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" @@ -18630,20 +20845,26 @@ }, "@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.17.12", + "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.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-async-to-generator": { "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.16.7", @@ -18652,192 +20873,251 @@ } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", + "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.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.4", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", + "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-classes": { - "version": "7.18.4", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", + "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.18.2", - "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" + }, + "dependencies": { + "@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/plugin-transform-computed-properties": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", + "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", + "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", + "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.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", + "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", + "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.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@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.1", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", + "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { - "version": "7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", + "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-literals": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", + "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", + "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.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.18.0", + "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.0", - "@babel/helper-plugin-utils": "^7.17.12", + "@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.2", + "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.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-simple-access": "^7.18.2", + "@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.5", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", + "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.18.0", + "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.0", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.17.12", + "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.17.12", - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-new-target": { - "version": "7.18.5", + "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.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-object-super": { - "version": "7.16.7", + "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.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" } }, "@babel/plugin-transform-parameters": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", + "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-property-literals": { - "version": "7.16.7", + "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.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-regenerator": { - "version": "7.18.0", + "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.17.12", + "@babel/helper-plugin-utils": "^7.18.6", "regenerator-transform": "^0.15.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.17.12", + "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.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-runtime": { "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz", + "integrity": "sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.16.7", @@ -18850,63 +21130,81 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", + "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.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-spread": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", + "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", + "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.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.2", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", + "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.17.12", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", + "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", + "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.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", + "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.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/preset-env": { "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.17.10.tgz", + "integrity": "sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g==", "dev": true, "requires": { "@babel/compat-data": "^7.17.10", @@ -18987,12 +21285,16 @@ "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", @@ -19004,6 +21306,8 @@ }, "@babel/runtime": { "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -19011,6 +21315,8 @@ }, "@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", @@ -19019,35 +21325,41 @@ } }, "@babel/traverse": { - "version": "7.18.5", + "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.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.5", - "@babel/types": "^7.18.4", + "@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.2", + "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.2", - "@jridgewell/gen-mapping": "^0.3.0", + "@babel/types": "^7.18.7", + "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } }, "@jridgewell/gen-mapping": { - "version": "0.3.1", + "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.0", + "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.9" } @@ -19055,19 +21367,25 @@ } }, "@babel/types": { - "version": "7.18.4", + "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.16.7", + "@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-color-function": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.0.tgz", + "integrity": "sha512-5D5ND/mZWcQoSfYnSPsXtuiFxhzmhxt6pcjrFLJyldj+p0ZN2vvRpYNX+lahFTtMhAYOa2WmkdGINr0yP0CvGA==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -19076,6 +21394,8 @@ }, "@csstools/postcss-font-format-keywords": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz", + "integrity": "sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -19083,6 +21403,8 @@ }, "@csstools/postcss-hwb-function": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.1.tgz", + "integrity": "sha512-AMZwWyHbbNLBsDADWmoXT9A5yl5dsGEBeJSJRUJt8Y9n8Ziu7Wstt4MC8jtPW7xjcLecyfJwtnUTNSmOzcnWeg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -19090,6 +21412,8 @@ }, "@csstools/postcss-ic-unit": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz", + "integrity": "sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -19097,7 +21421,9 @@ } }, "@csstools/postcss-is-pseudo-class": { - "version": "2.0.5", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.6.tgz", + "integrity": "sha512-Oqs396oenuyyMdRXOstxXbxei8fYEgToYjmlYHEi5gk0QLk7xQ72LY7NDr7waWAAmdVzRqPpbE26Q7/cUrGu4Q==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", @@ -19106,6 +21432,8 @@ }, "@csstools/postcss-normalize-display-values": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz", + "integrity": "sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -19113,6 +21441,8 @@ }, "@csstools/postcss-oklab-function": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.0.tgz", + "integrity": "sha512-e/Q5HopQzmnQgqimG9v3w2IG4VRABsBq3itOcn4bnm+j4enTgQZ0nWsaH/m9GV2otWGQ0nwccYL5vmLKyvP1ww==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -19121,6 +21451,8 @@ }, "@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" @@ -19128,6 +21460,8 @@ }, "@csstools/postcss-stepped-value-functions": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.0.tgz", + "integrity": "sha512-q8c4bs1GumAiRenmFjASBcWSLKrbzHzWl6C2HcaAxAXIiL2rUlUWbqQZUjwVG5tied0rld19j/Mm90K3qI26vw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -19135,26 +21469,36 @@ }, "@csstools/postcss-unset-value": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.1.tgz", + "integrity": "sha512-f1G1WGDXEU/RN1TWAxBPQgQudtLnLQPyiWdtypkPC+mVYNKFKH/HYXSxH4MVNqwF8M0eDsoiU7HumJHCg/L/jg==", "dev": true, "requires": {} }, "@csstools/selector-specificity": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz", + "integrity": "sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==", "dev": true, "requires": {} }, "@ctrl/ngx-codemirror": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@ctrl/ngx-codemirror/-/ngx-codemirror-5.1.1.tgz", + "integrity": "sha512-MAByA/cJBZY3yv/cpO87mF9Q24/ptCWf2Pr4n4V1w3G0ya5cKAIyHwIfvJ5nJz/4Gj2i2O/pteDWkyxrbyICoA==", "requires": { "@types/codemirror": "^5.60.5", "tslib": "^2.3.0" } }, "@ctrl/tinycolor": { - "version": "3.4.1" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" }, "@cypress/request": { "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -19179,6 +21523,8 @@ }, "@cypress/xvfb": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", "dev": true, "requires": { "debug": "^3.1.0", @@ -19187,6 +21533,8 @@ "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" @@ -19196,10 +21544,14 @@ }, "@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 }, "@eslint/eslintrc": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -19215,6 +21567,8 @@ "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", @@ -19225,10 +21579,14 @@ }, "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "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", @@ -19236,7 +21594,9 @@ } }, "globals": { - "version": "13.15.0", + "version": "13.16.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", + "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -19244,6 +21604,8 @@ }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -19251,10 +21613,14 @@ }, "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 }, "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" @@ -19262,16 +21628,22 @@ }, "type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } }, "@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 }, "@grpc/grpc-js": { "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.7.tgz", + "integrity": "sha512-eBM03pu9hd3VqDQG+kHahiG1x80RGkkqqRb1Pchcwqej/KkAH95gAvKs6laqaHCycYaPK+TKuNQnOz9UXYA8qw==", "requires": { "@grpc/proto-loader": "^0.6.4", "@types/node": ">=12.12.47" @@ -19279,6 +21651,8 @@ }, "@grpc/proto-loader": { "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", + "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", "requires": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", @@ -19289,6 +21663,8 @@ "dependencies": { "yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -19300,12 +21676,16 @@ } }, "yargs-parser": { - "version": "20.2.9" + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" } } }, "@humanwhocodes/config-array": { "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -19315,6 +21695,8 @@ "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", @@ -19323,6 +21705,8 @@ }, "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" @@ -19332,10 +21716,14 @@ }, "@humanwhocodes/object-schema": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", + "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", @@ -19347,10 +21735,14 @@ }, "@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", @@ -19358,19 +21750,27 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.7", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz", + "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==", "dev": true }, "@jridgewell/set-array": { - "version": "1.1.1", + "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/sourcemap-codec": { - "version": "1.4.13", + "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.13", + "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", @@ -19379,27 +21779,37 @@ }, "@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.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.0.4.tgz", + "integrity": "sha512-83b/gB4Kna2FhIQj82RNZol+6gq+vLv6+4LUFOGSBb4Xha3RVQGJQpGwqEkXRFziwgTODrPWJAnOup5pzKv9wA==", "dev": true, "requires": {} }, "@ngx-translate/core": { "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-14.0.0.tgz", + "integrity": "sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w==", "requires": { "tslib": "^2.3.0" } }, "@ngx-translate/http-loader": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-7.0.0.tgz", + "integrity": "sha512-j+NpXXlcGVdyUNyY/qsJrqqeAdJdizCd+GKh3usXExSqy1aE9866jlAIL+xrfDU4w+LiMoma5pgE4emvFebZmA==", "requires": { "tslib": "^2.3.0" } }, "@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", @@ -19408,10 +21818,14 @@ }, "@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", @@ -19420,6 +21834,8 @@ }, "@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", @@ -19428,6 +21844,8 @@ }, "@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", @@ -19443,6 +21861,8 @@ }, "@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", @@ -19451,6 +21871,8 @@ }, "@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", @@ -19459,10 +21881,14 @@ }, "@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" @@ -19470,6 +21896,8 @@ }, "@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", @@ -19479,21 +21907,27 @@ } }, "@nrwl/cli": { - "version": "14.3.6", + "version": "14.4.1", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.1.tgz", + "integrity": "sha512-9MHzXneygo1+hYgmBxrxe4L702OikuhcCzbUJ1W0JuvcEk/tbotn/EG/jaJqBzPyCQz1cZYYlJuN7sxg8bdtNw==", "dev": true, "requires": { - "nx": "14.3.6" + "nx": "14.4.1" }, "dependencies": { "@nrwl/tao": { - "version": "14.3.6", + "version": "14.4.1", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.1.tgz", + "integrity": "sha512-BLao0kpWFkP38V3Fli2cYmM3Vbjkfu01EKrKULIukPh7VlT8nX0vgUND7LcPg46d+HTlaQG12SGLqiMroB+qwQ==", "dev": true, "requires": { - "nx": "14.3.6" + "nx": "14.4.1" } }, "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" @@ -19501,10 +21935,14 @@ }, "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "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", @@ -19513,6 +21951,8 @@ }, "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", @@ -19521,6 +21961,8 @@ }, "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" @@ -19528,10 +21970,14 @@ }, "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 }, "fast-glob": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -19543,6 +21989,8 @@ }, "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", @@ -19552,6 +22000,8 @@ }, "glob": { "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -19564,10 +22014,14 @@ }, "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 }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -19575,6 +22029,8 @@ }, "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" @@ -19582,17 +22038,21 @@ }, "minimatch": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "nx": { - "version": "14.3.6", + "version": "14.4.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.1.tgz", + "integrity": "sha512-nXWrvtAe1Lp4IqqrjjhEQ0S3LmrlVLb9vjKkhSeirLOFnECWhf905hR0iQe8p+JDRrlD0zSjo2YiAAF1c6SarQ==", "dev": true, "requires": { - "@nrwl/cli": "14.3.6", - "@nrwl/tao": "14.3.6", + "@nrwl/cli": "14.4.1", + "@nrwl/tao": "14.4.1", "@parcel/watcher": "2.0.4", "chalk": "4.1.0", "chokidar": "^3.5.1", @@ -19625,6 +22085,8 @@ }, "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" @@ -19632,6 +22094,8 @@ }, "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" @@ -19639,12 +22103,16 @@ }, "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 } } }, "@nrwl/devkit": { "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-13.1.3.tgz", + "integrity": "sha512-TAAsZJvVc/obeH0rZKY6miVhyM2GHGb8qIWp9MAIdLlXf4VDcNC7rxwb5OrGVSwuTTjqGYBGPUx0yEogOOJthA==", "dev": true, "requires": { "@nrwl/tao": "13.1.3", @@ -19657,6 +22125,8 @@ "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" @@ -19664,6 +22134,8 @@ }, "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" @@ -19671,12 +22143,16 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "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" @@ -19686,6 +22162,8 @@ }, "@nrwl/tao": { "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-13.1.3.tgz", + "integrity": "sha512-/IwJgSgCBD1SaF+n8RuXX2OxDAh8ut/+P8pMswjm8063ac30UlAHjQ4XTYyskLH8uoUmNi2hNaGgHUrkwt7tQA==", "dev": true, "requires": { "chalk": "4.1.0", @@ -19703,6 +22181,8 @@ "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" @@ -19710,6 +22190,8 @@ }, "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", @@ -19718,6 +22200,8 @@ }, "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" @@ -19725,14 +22209,20 @@ }, "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 }, "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" @@ -19740,6 +22230,8 @@ }, "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" @@ -19747,17 +22239,23 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "rxjs-for-await": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/rxjs-for-await/-/rxjs-for-await-0.0.2.tgz", + "integrity": "sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw==", "dev": true, "requires": {} }, "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" @@ -19765,6 +22263,8 @@ }, "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" @@ -19774,6 +22274,8 @@ }, "@parcel/watcher": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", "dev": true, "requires": { "node-addon-api": "^3.2.1", @@ -19781,50 +22283,74 @@ } }, "@protobufjs/aspromise": { - "version": "1.1.2" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, "@protobufjs/base64": { - "version": "1.1.2" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" }, "@protobufjs/codegen": { - "version": "2.0.4" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" }, "@protobufjs/eventemitter": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, "@protobufjs/fetch": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "requires": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, "@protobufjs/float": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, "@protobufjs/inquire": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, "@protobufjs/path": { - "version": "1.1.2" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, "@protobufjs/pool": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, "@protobufjs/utf8": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "@schematics/angular": { - "version": "14.0.2", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.4.tgz", + "integrity": "sha512-2t7B8ZplJzLfrU7SjciaUquaOAWCi6SD954Q1Ej/SZfWlLjs8k1SvlKb+Syzo9TMByMuzdKTrdnmNRHekvMZEQ==", "dev": true, "requires": { - "@angular-devkit/core": "14.0.2", - "@angular-devkit/schematics": "14.0.2", + "@angular-devkit/core": "14.0.4", + "@angular-devkit/schematics": "14.0.4", "jsonc-parser": "3.0.0" } }, "@stylelint/postcss-css-in-js": { "version": "0.37.3", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz", + "integrity": "sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==", "dev": true, "requires": { "@babel/core": "^7.17.9" @@ -19832,6 +22358,8 @@ }, "@stylelint/postcss-markdown": { "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", "dev": true, "requires": { "remark": "^13.0.0", @@ -19840,10 +22368,14 @@ }, "@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": "*", @@ -19852,6 +22384,8 @@ }, "@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": "*" @@ -19859,16 +22393,22 @@ }, "@types/codemirror": { "version": "5.60.5", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz", + "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", "requires": { "@types/tern": "*" } }, "@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": "*" @@ -19876,6 +22416,8 @@ }, "@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": "*", @@ -19884,14 +22426,20 @@ }, "@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.3", + "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": "*", @@ -19899,7 +22447,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.3", + "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": "*", @@ -19907,10 +22457,14 @@ } }, "@types/estree": { - "version": "0.0.51" + "version": "0.0.52", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.52.tgz", + "integrity": "sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ==" }, "@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": "*", @@ -19921,6 +22475,8 @@ }, "@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": "*", @@ -19929,13 +22485,19 @@ } }, "@types/file-saver": { - "version": "2.0.5" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==" }, "@types/google-protobuf": { - "version": "3.15.6" + "version": "3.15.6", + "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.6.tgz", + "integrity": "sha512-pYVNNJ+winC4aek+lZp93sIKxnXt5qMkuKmaqS3WGuTq0Bw1ZDYNBgzG5kkdtwcv+GmYJGo3yEg6z2cKKAiEdw==" }, "@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": "*" @@ -19943,10 +22505,14 @@ }, "@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/jasminewd2": { "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz", + "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==", "dev": true, "requires": { "@types/jasmine": "*" @@ -19954,24 +22520,34 @@ }, "@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/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "@types/jsonwebtoken": { "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz", + "integrity": "sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==", "dev": true, "requires": { "@types/node": "*" } }, "@types/long": { - "version": "4.0.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "@types/mdast": { "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", "dev": true, "requires": { "@types/unist": "*" @@ -19979,45 +22555,67 @@ }, "@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/minimist": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, "@types/node": { - "version": "17.0.45" + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" }, "@types/normalize-package-data": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "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": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==", "dev": true }, "@types/qs": { "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, "@types/range-parser": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, "@types/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, "@types/selenium-webdriver": { "version": "3.0.20", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz", + "integrity": "sha512-6d8Q5fqS9DWOXEhMDiF6/2FjyHdmP/jSTAUyeQR7QwrFeNmYyzmvGxD5aLIHL445HjWgibs0eAig+KPnbaesXA==", "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": "*" @@ -20025,6 +22623,8 @@ }, "@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", @@ -20033,14 +22633,20 @@ }, "@types/sinonjs__fake-timers": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", "dev": true }, "@types/sizzle": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", "dev": true }, "@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": "*" @@ -20048,19 +22654,27 @@ }, "@types/tern": { "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", "requires": { "@types/estree": "*" } }, "@types/unist": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, "@types/uuid": { - "version": "8.3.4" + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" }, "@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": "*" @@ -20068,6 +22682,8 @@ }, "@types/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "dev": true, "optional": true, "requires": { @@ -20075,204 +22691,186 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.25.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.4.tgz", + "integrity": "sha512-xjujQISAIa4HAaos8fcMZXmqkuZqMx6icdxkI88jMM/eNe4J8AuTLYnLK+zdm0mBYLyctdFf//UE4/xFCcQzYQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/type-utils": "5.25.0", - "@typescript-eslint/utils": "5.25.0", + "@typescript-eslint/scope-manager": "5.30.4", + "@typescript-eslint/type-utils": "5.30.4", + "@typescript-eslint/utils": "5.30.4", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "5.27.1", - "dev": true, - "requires": { - "@typescript-eslint/utils": "5.27.1" }, "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.27.1", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/visitor-keys": "5.27.1" - } - }, - "@typescript-eslint/types": { - "version": "5.27.1", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.27.1", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/visitor-keys": "5.27.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, "@typescript-eslint/utils": { - "version": "5.27.1", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.4.tgz", + "integrity": "sha512-a+GQrJzOUhn4WT1mUumXDyam+22Oo4c5K/jnZ+6r/4WTQF3q8e4CsC9PLHb4SnOClzOqo/5GLZWvkE1aa5UGKQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.27.1", - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/typescript-estree": "5.27.1", + "@typescript-eslint/scope-manager": "5.30.4", + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/typescript-estree": "5.30.4", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.27.1", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.27.1", - "eslint-visitor-keys": "^3.3.0" - } } } }, "@typescript-eslint/parser": { - "version": "5.27.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.4.tgz", + "integrity": "sha512-/ge1HtU63wVoED4VnlU2o+FPFmi017bPYpeSrCmd8Ycsti4VSxXrmcpXXm7JpI4GT0Aa7qviabv1PEp6L5bboQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.27.0", - "@typescript-eslint/types": "5.27.0", - "@typescript-eslint/typescript-estree": "5.27.0", + "@typescript-eslint/scope-manager": "5.30.4", + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/typescript-estree": "5.30.4", "debug": "^4.3.4" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.27.0", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.27.0", - "@typescript-eslint/visitor-keys": "5.27.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.27.0", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.27.0", - "eslint-visitor-keys": "^3.3.0" - } - } } }, "@typescript-eslint/scope-manager": { - "version": "5.25.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.4.tgz", + "integrity": "sha512-DNzlQwGSiGefz71JwaHrpcaAX3zYkEcy8uVuan3YMKOa6qeW/y+7SaD8KIsIAruASwq6P+U4BjWBWtM2O+mwBQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/visitor-keys": "5.25.0" - }, - "dependencies": { - "@typescript-eslint/types": { - "version": "5.25.0", - "dev": true - } + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/visitor-keys": "5.30.4" } }, "@typescript-eslint/type-utils": { - "version": "5.25.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.4.tgz", + "integrity": "sha512-55cf1dZviwwv+unDB+mF8vZkfta5muTK6bppPvenWWCD7slZZ0DEsXUjZerqy7Rq8s3J4SXdg4rMIY8ngCtTmA==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.25.0", + "@typescript-eslint/utils": "5.30.4", "debug": "^4.3.4", "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/utils": { + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.4.tgz", + "integrity": "sha512-a+GQrJzOUhn4WT1mUumXDyam+22Oo4c5K/jnZ+6r/4WTQF3q8e4CsC9PLHb4SnOClzOqo/5GLZWvkE1aa5UGKQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.30.4", + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/typescript-estree": "5.30.4", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + } } }, "@typescript-eslint/types": { - "version": "5.27.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.4.tgz", + "integrity": "sha512-NTEvqc+Vvu8Q6JeAKryHk2eqLKqsr2St3xhIjhOjQv5wQUBhaTuix4WOSacqj0ONWfKVU12Eug3LEAB95GBkMA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.27.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.4.tgz", + "integrity": "sha512-V4VnEs6/J9/nNizaA12IeU4SAeEYaiKr7XndLNfV5+3zZSB4hIu6EhHJixTKhvIqA+EEHgBl6re8pivBMLLO1w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.27.0", - "@typescript-eslint/visitor-keys": "5.27.0", + "@typescript-eslint/types": "5.30.4", + "@typescript-eslint/visitor-keys": "5.30.4", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", "semver": "^7.3.7", "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/visitor-keys": { - "version": "5.27.0", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.27.0", - "eslint-visitor-keys": "^3.3.0" - } - } } }, "@typescript-eslint/utils": { - "version": "5.25.0", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", + "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.25.0", - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/typescript-estree": "5.25.0", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/typescript-estree": "5.29.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", + "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0" + } + }, "@typescript-eslint/types": { - "version": "5.25.0", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", + "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.25.0", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", + "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.25.0", - "@typescript-eslint/visitor-keys": "5.25.0", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", "semver": "^7.3.7", "tsutils": "^3.21.0" } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", + "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.29.0", + "eslint-visitor-keys": "^3.3.0" + } } } }, "@typescript-eslint/visitor-keys": { - "version": "5.25.0", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.4.tgz", + "integrity": "sha512-ulKGse3mruSc8x6l8ORSc6+1ORyJzKmZeIaRTu/WpaF/jx3vHvEn5XZUKF9XaVg2710mFmTAUlLcLYLPp/Zf/Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/types": "5.30.4", "eslint-visitor-keys": "^3.3.0" - }, - "dependencies": { - "@typescript-eslint/types": { - "version": "5.25.0", - "dev": true - } } }, "@ungap/promise-all-settled": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true, "peer": true }, "@webassemblyjs/ast": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", @@ -20281,18 +22879,26 @@ }, "@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", @@ -20302,10 +22908,14 @@ }, "@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", @@ -20316,6 +22926,8 @@ }, "@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" @@ -20323,6 +22935,8 @@ }, "@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" @@ -20330,10 +22944,14 @@ }, "@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", @@ -20348,6 +22966,8 @@ }, "@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", @@ -20359,6 +22979,8 @@ }, "@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", @@ -20369,6 +22991,8 @@ }, "@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", @@ -20381,6 +23005,8 @@ }, "@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", @@ -20389,26 +23015,38 @@ }, "@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", @@ -20417,20 +23055,28 @@ }, "acorn": { "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "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": {} }, "acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, "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", @@ -20439,6 +23085,8 @@ "dependencies": { "loader-utils": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -20450,10 +23098,14 @@ }, "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": "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" @@ -20461,6 +23113,8 @@ }, "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", @@ -20470,12 +23124,16 @@ "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", @@ -20484,6 +23142,8 @@ }, "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", @@ -20494,6 +23154,8 @@ }, "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" @@ -20501,6 +23163,8 @@ }, "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" @@ -20508,6 +23172,8 @@ }, "angular-oauth2-oidc": { "version": "13.0.1", + "resolved": "https://registry.npmjs.org/angular-oauth2-oidc/-/angular-oauth2-oidc-13.0.1.tgz", + "integrity": "sha512-aL1VIv9Jqoqq31lbpUXIeNpM3GeN/ldb3KOlq0cV92amGpZs9J4YA+2rlJ5V9zb6NFNbvd7XfTntMbnNuS0+CQ==", "requires": { "fast-sha256": "^1.3.0", "tslib": "^2.0.0" @@ -20515,10 +23181,14 @@ }, "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" @@ -20526,13 +23196,19 @@ }, "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" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "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" @@ -20540,6 +23216,8 @@ }, "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", @@ -20548,18 +23226,26 @@ }, "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": "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 }, "arch": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "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", @@ -20568,6 +23254,8 @@ }, "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" @@ -20575,32 +23263,46 @@ "dependencies": { "sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true } } }, "aria-query": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", "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": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, "arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "asn1": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -20608,34 +23310,50 @@ }, "assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "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": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, "astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, "asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "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", @@ -20648,18 +23366,26 @@ }, "aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "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": "3.0.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", + "integrity": "sha512-vy5JPSOibF9yAeC2PoemRdA1MuSXX7vX5osdoxKf/6OUeppAWekZ3JIJVNWFMH6wgj7uHYyqZUSqE/b/3JLV1A==", "dev": true }, "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", @@ -20670,6 +23396,8 @@ "dependencies": { "loader-utils": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -20681,6 +23409,8 @@ }, "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" @@ -20688,6 +23418,8 @@ }, "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", @@ -20699,6 +23431,8 @@ }, "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", @@ -20708,12 +23442,16 @@ "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", @@ -20722,6 +23460,8 @@ }, "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" @@ -20729,25 +23469,37 @@ }, "bail": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", "dev": true }, "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" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "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 }, "bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "requires": { "tweetnacl": "^0.14.3" @@ -20755,14 +23507,20 @@ }, "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", @@ -20772,6 +23530,8 @@ "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", @@ -20782,10 +23542,14 @@ }, "blob-util": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", "dev": true }, "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" @@ -20793,10 +23557,14 @@ }, "bluebird": { "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "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", @@ -20815,6 +23583,8 @@ "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" @@ -20822,10 +23592,14 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "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" @@ -20835,6 +23609,8 @@ }, "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", @@ -20845,10 +23621,14 @@ }, "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" @@ -20856,6 +23636,8 @@ }, "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" @@ -20863,22 +23645,27 @@ }, "browser-stdout": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, "peer": true }, "browserslist": { - "version": "4.20.4", + "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.30001349", - "electron-to-chromium": "^1.4.147", - "escalade": "^3.1.1", + "caniuse-lite": "^1.0.30001359", + "electron-to-chromium": "^1.4.172", "node-releases": "^2.0.5", - "picocolors": "^1.0.0" + "update-browserslist-db": "^1.0.4" } }, "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" @@ -20886,6 +23673,8 @@ "dependencies": { "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" @@ -20893,6 +23682,8 @@ }, "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" @@ -20900,6 +23691,8 @@ }, "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", @@ -20910,6 +23703,8 @@ }, "buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -20917,23 +23712,33 @@ }, "buffer-crc32": { "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-equal-constant-time": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true }, "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 }, "builtin-modules": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", "dev": true, "peer": true }, "builtins": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "requires": { "semver": "^7.0.0" @@ -20941,10 +23746,14 @@ }, "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", @@ -20969,10 +23778,14 @@ }, "cachedir": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true }, "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", @@ -20981,13 +23794,19 @@ }, "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" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "camelcase-keys": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -20996,15 +23815,21 @@ } }, "caniuse-lite": { - "version": "1.0.30001355", + "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 }, "caseless": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "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", @@ -21014,26 +23839,38 @@ }, "character-entities": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true }, "character-entities-legacy": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", "dev": true }, "character-reference-invalid": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true }, "chardet": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, "check-more-types": { "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "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", @@ -21048,22 +23885,32 @@ }, "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 }, "ci-info": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "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" @@ -21071,10 +23918,14 @@ }, "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-table3": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", "dev": true, "requires": { "@colors/colors": "1.5.0", @@ -21083,6 +23934,8 @@ }, "cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "requires": { "slice-ansi": "^3.0.0", @@ -21091,10 +23944,14 @@ }, "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==", "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -21103,10 +23960,14 @@ }, "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", @@ -21116,6 +23977,8 @@ }, "clone-regexp": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", "dev": true, "requires": { "is-regexp": "^2.0.0" @@ -21123,6 +23986,8 @@ }, "codelyzer": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.2.tgz", + "integrity": "sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g==", "dev": true, "requires": { "@angular/compiler": "9.0.0", @@ -21143,16 +24008,22 @@ "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, "requires": {} }, "@angular/core": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", "dev": true, "requires": {} }, "aria-query": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", "dev": true, "requires": { "ast-types-flow": "0.0.7", @@ -21161,6 +24032,8 @@ }, "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" @@ -21168,10 +24041,14 @@ }, "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 }, "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" @@ -21179,25 +24056,33 @@ }, "source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "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 }, "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==", "dev": true } } }, "codemirror": { - "version": "5.65.5", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.5.tgz", - "integrity": "sha512-HNyhvGLnYz5c+kIsB9QKVitiZUevha3ovbIYaQiGzKo7ECSL/elWD9RXt3JgNr0NdnyqE9/Rc/7uLfkJQL638w==" + "version": "5.65.6", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.6.tgz", + "integrity": "sha512-zNihMSMoDxK9Gqv9oEyDT8oM51rcRrQ+IEo2zyS48gJByBq5Fj8XuNEguMra+MuIOuh6lkpnLUJeL70DoTt6yw==" }, "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" @@ -21205,22 +24090,32 @@ }, "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 }, "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" @@ -21228,22 +24123,32 @@ }, "commander": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true }, "common-tags": { "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true }, "commondir": { "version": "1.0.1", + "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" @@ -21251,6 +24156,8 @@ }, "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", @@ -21264,10 +24171,14 @@ "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" @@ -21275,16 +24186,22 @@ }, "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", @@ -21295,6 +24212,8 @@ "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" @@ -21302,20 +24221,28 @@ }, "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": "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-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" @@ -21323,16 +24250,22 @@ "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" @@ -21340,14 +24273,20 @@ }, "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" @@ -21355,6 +24294,8 @@ }, "copy-webpack-plugin": { "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", "dev": true, "requires": { "fast-glob": "^3.2.7", @@ -21367,10 +24308,14 @@ "dependencies": { "array-union": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", "dev": true }, "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" @@ -21378,6 +24323,8 @@ }, "globby": { "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", "dev": true, "requires": { "array-union": "^3.0.1", @@ -21390,6 +24337,8 @@ }, "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", @@ -21400,30 +24349,40 @@ }, "slash": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true } } }, "core-js-compat": { - "version": "3.23.1", + "version": "3.23.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.3.tgz", + "integrity": "sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==", "dev": true, "requires": { - "browserslist": "^4.20.4", + "browserslist": "^4.21.0", "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": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "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==", "requires": { "object-assign": "^4", "vary": "^1" @@ -21431,6 +24390,8 @@ }, "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", @@ -21442,6 +24403,8 @@ }, "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", @@ -21454,6 +24417,8 @@ "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" @@ -21461,6 +24426,8 @@ }, "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", @@ -21469,6 +24436,8 @@ }, "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" @@ -21476,18 +24445,26 @@ }, "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" @@ -21497,6 +24474,8 @@ }, "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", @@ -21506,6 +24485,8 @@ }, "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", @@ -21515,12 +24496,16 @@ "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" @@ -21528,6 +24513,8 @@ }, "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" @@ -21535,6 +24522,8 @@ }, "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", @@ -21549,11 +24538,15 @@ }, "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", @@ -21565,6 +24558,8 @@ }, "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", @@ -21573,10 +24568,14 @@ }, "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 }, "cssauron": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==", "dev": true, "requires": { "through": "X.X.X" @@ -21584,18 +24583,26 @@ }, "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 }, "cypress": { - "version": "10.1.0", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.3.0.tgz", + "integrity": "sha512-txkQWKzvBVnWdCuKs5Xc08gjpO89W2Dom2wpZgT9zWZT5jXxqPIxqP/NC1YArtkpmp3fN5HW8aDjYBizHLUFvg==", "dev": true, "requires": { "@cypress/request": "^2.88.10", @@ -21644,10 +24651,14 @@ "dependencies": { "@types/node": { "version": "14.18.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz", + "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==", "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" @@ -21655,6 +24666,8 @@ }, "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", @@ -21663,6 +24676,8 @@ }, "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", @@ -21671,6 +24686,8 @@ "dependencies": { "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" @@ -21680,6 +24697,8 @@ }, "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" @@ -21687,14 +24706,20 @@ }, "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": "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" @@ -21703,7 +24728,9 @@ } }, "cypress-terminal-report": { - "version": "4.0.1", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cypress-terminal-report/-/cypress-terminal-report-4.0.2.tgz", + "integrity": "sha512-sk7zBRZIh19U32pbOyv6GtlWPxE1C6l+mMAhnPAmsv619s7+O7/jZbI4YZfM2MyO50Om/qEq7W5rVP8yolihAA==", "dev": true, "requires": { "chalk": "^3.0.0", @@ -21715,6 +24742,8 @@ "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" @@ -21722,6 +24751,8 @@ }, "chalk": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -21730,6 +24761,8 @@ }, "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" @@ -21737,14 +24770,20 @@ }, "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" @@ -21754,10 +24793,14 @@ }, "damerau-levenshtein": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, "dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -21765,28 +24808,40 @@ }, "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 }, "dateformat": { "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "dev": true }, "dayjs": { "version": "1.11.3", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz", + "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A==", "dev": true }, "debug": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" } }, "decamelize": { - "version": "1.2.0" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" }, "decamelize-keys": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", "dev": true, "requires": { "decamelize": "^1.1.0", @@ -21795,20 +24850,28 @@ "dependencies": { "map-obj": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "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": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", "dev": true }, "deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "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" @@ -21816,6 +24879,8 @@ "dependencies": { "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", @@ -21831,16 +24896,22 @@ }, "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 }, "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 } } }, "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" @@ -21848,10 +24919,14 @@ }, "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", @@ -21860,6 +24935,8 @@ }, "del": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", "dev": true, "requires": { "globby": "^5.0.0", @@ -21873,6 +24950,8 @@ "dependencies": { "array-union": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "requires": { "array-uniq": "^1.0.1" @@ -21880,6 +24959,8 @@ }, "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", @@ -21888,6 +24969,8 @@ }, "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", @@ -21900,6 +24983,8 @@ }, "globby": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", "dev": true, "requires": { "array-union": "^1.0.1", @@ -21912,6 +24997,8 @@ }, "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" @@ -21919,6 +25006,8 @@ }, "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" @@ -21928,41 +25017,61 @@ }, "delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "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 }, "diff": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "dijkstrajs": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" }, "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" @@ -21970,10 +25079,14 @@ }, "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" @@ -21981,6 +25094,8 @@ }, "doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -21988,6 +25103,8 @@ }, "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", @@ -21998,6 +25115,8 @@ }, "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", @@ -22007,10 +25126,14 @@ }, "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" @@ -22018,6 +25141,8 @@ }, "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", @@ -22027,10 +25152,14 @@ }, "dotenv": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true }, "ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "requires": { "jsbn": "~0.1.0", @@ -22039,6 +25168,8 @@ }, "ecdsa-sig-formatter": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -22046,35 +25177,51 @@ }, "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 }, "ejs": { "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "requires": { "jake": "^10.8.5" } }, "electron-to-chromium": { - "version": "1.4.160", + "version": "1.4.179", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.179.tgz", + "integrity": "sha512-1XeTb/U/8Xgh2YgPOqhakLYsvCcU4U7jUjTMbEnhIJoIWd/Qt3yC8y0cbG+fHzn4zUNF99Ey1xiPf20bwgLO3Q==", "dev": true }, "emoji-regex": { - "version": "8.0.0" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "encode-utf8": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" }, "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": { @@ -22083,6 +25230,8 @@ "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": { @@ -22093,6 +25242,8 @@ }, "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" @@ -22100,6 +25251,8 @@ }, "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", @@ -22116,10 +25269,14 @@ }, "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.9.3", + "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", @@ -22128,6 +25285,8 @@ }, "enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -22135,22 +25294,32 @@ }, "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": { @@ -22159,6 +25328,8 @@ }, "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" @@ -22166,14 +25337,20 @@ }, "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 }, "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": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", "dev": true, "requires": { "es6-promise": "^4.0.3" @@ -22181,6 +25358,8 @@ }, "esbuild": { "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", + "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", "dev": true, "optional": true, "requires": { @@ -22206,28 +25385,173 @@ "esbuild-windows-arm64": "0.14.38" } }, + "esbuild-android-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", + "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", + "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", + "dev": true, + "optional": true + }, "esbuild-darwin-64": { "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", + "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", + "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", + "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", + "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", + "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", + "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", + "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", + "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", + "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", + "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", + "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", + "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", + "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", + "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", + "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", "dev": true, "optional": true }, "esbuild-wasm": { "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.38.tgz", + "integrity": "sha512-mObTw5/3+KIOTShVgk3fuEn+INnHgOSbWJuGkInEZTWpUOh/+TCSgRxl5cDon4OkoaLU5rWm7R7Dkl/mJv8SGw==", "dev": true }, + "esbuild-windows-32": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", + "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", + "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.38", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", + "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", + "dev": true, + "optional": true + }, "escalade": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "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": { - "version": "8.17.0", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz", + "integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.0", @@ -22269,6 +25593,8 @@ "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", @@ -22279,6 +25605,8 @@ }, "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" @@ -22286,10 +25614,14 @@ }, "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "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", @@ -22298,6 +25630,8 @@ }, "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", @@ -22306,6 +25640,8 @@ }, "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" @@ -22313,14 +25649,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "eslint-scope": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -22329,17 +25671,23 @@ }, "estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { "is-glob": "^4.0.3" } }, "globals": { - "version": "13.15.0", + "version": "13.16.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", + "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -22347,10 +25695,14 @@ }, "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 }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -22358,10 +25710,14 @@ }, "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 }, "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" @@ -22369,6 +25725,8 @@ }, "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" @@ -22376,12 +25734,16 @@ }, "type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } }, "eslint-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", @@ -22390,6 +25752,8 @@ }, "eslint-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { "eslint-visitor-keys": "^2.0.0" @@ -22397,16 +25761,22 @@ "dependencies": { "eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true } } }, "eslint-visitor-keys": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "requires": { "acorn": "^8.7.1", @@ -22416,10 +25786,14 @@ }, "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 }, "esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -22427,12 +25801,16 @@ "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 } } }, "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" @@ -22440,40 +25818,58 @@ "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 }, "eventemitter2": { - "version": "6.4.5", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.6.tgz", + "integrity": "sha512-OHqo4wbHX5VbvlbB6o6eDwhYmiTjrpWACjF8Pmof/GTD6rdBNdZFNck3xlhqOiQFGCOoq3uzHvA0cQpFHIGVAQ==", "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": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -22489,6 +25885,8 @@ }, "execall": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", "dev": true, "requires": { "clone-regexp": "^2.1.0" @@ -22496,6 +25894,8 @@ }, "executable": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "dev": true, "requires": { "pify": "^2.2.0" @@ -22503,10 +25903,14 @@ }, "exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "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", @@ -22544,14 +25948,20 @@ "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" @@ -22559,6 +25969,8 @@ }, "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", @@ -22572,10 +25984,14 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "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" @@ -22583,20 +25999,28 @@ }, "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", @@ -22606,6 +26030,8 @@ "dependencies": { "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" @@ -22615,6 +26041,8 @@ }, "extract-zip": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "requires": { "@types/yauzl": "^2.9.1", @@ -22625,14 +26053,20 @@ }, "extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "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.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", @@ -22644,25 +26078,37 @@ }, "fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fast-sha256": { - "version": "1.3.0" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", + "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==" }, "fastest-levenshtein": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, "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.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" @@ -22670,6 +26116,8 @@ }, "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" @@ -22677,6 +26125,8 @@ }, "fd-slicer": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "requires": { "pend": "~1.2.0" @@ -22684,6 +26134,8 @@ }, "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" @@ -22691,16 +26143,22 @@ }, "file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" } }, "file-saver": { - "version": "2.0.5" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" }, "filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "requires": { "minimatch": "^5.0.1" @@ -22708,6 +26166,8 @@ }, "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" @@ -22715,6 +26175,8 @@ }, "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", @@ -22728,6 +26190,8 @@ "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" @@ -22735,10 +26199,14 @@ }, "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" @@ -22748,6 +26216,8 @@ }, "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", @@ -22757,6 +26227,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==", "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -22764,10 +26236,14 @@ }, "flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true }, "flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { "flatted": "^3.1.0", @@ -22775,19 +26251,27 @@ } }, "flatted": { - "version": "3.2.5", + "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 }, "forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "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", @@ -22797,22 +26281,32 @@ }, "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-constants": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, "fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { "at-least-node": "^1.0.0", @@ -22823,6 +26317,8 @@ }, "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" @@ -22830,31 +26326,45 @@ }, "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 }, "fsu": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fsu/-/fsu-1.1.1.tgz", + "integrity": "sha512-xQVsnjJ/5pQtcKh+KjUoZGzVWn4uNkchxTF6Lwjr4Gf7nQr8fmUfhKJ62zE77+xQg9xnxi5KUps7XGs+VC986A==", "dev": 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 }, "functional-red-black-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "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", @@ -22869,13 +26379,19 @@ }, "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" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "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", @@ -22885,14 +26401,20 @@ }, "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-stdin": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true }, "get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -22900,6 +26422,8 @@ }, "getos": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "dev": true, "requires": { "async": "^3.2.0" @@ -22907,6 +26431,8 @@ }, "getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -22914,6 +26440,8 @@ }, "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", @@ -22926,6 +26454,8 @@ }, "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" @@ -22933,10 +26463,14 @@ }, "glob-to-regexp": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, "global-dirs": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "dev": true, "requires": { "ini": "2.0.0" @@ -22944,12 +26478,16 @@ "dependencies": { "ini": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true } } }, "global-modules": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "requires": { "global-prefix": "^3.0.0" @@ -22957,6 +26495,8 @@ }, "global-prefix": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, "requires": { "ini": "^1.3.5", @@ -22966,10 +26506,14 @@ "dependencies": { "ini": { "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "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" @@ -22979,10 +26523,14 @@ }, "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.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -22995,42 +26543,60 @@ }, "globjoin": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, "gonzales-pe": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", "dev": true, "requires": { "minimist": "^1.2.5" } }, "google-proto-files": { - "version": "2.5.2", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-3.0.0.tgz", + "integrity": "sha512-YN2mHdmxnrMrQbC5jXmXZda0aQ90as7uMsUIxoqL6tydwz+7GjoQ0OsZ8kJmDXxXMZRgY5PFjqIvWKjEYyNGjQ==", "requires": { "protobufjs": "^6.8.0", "walkdir": "^0.4.0" } }, "google-protobuf": { - "version": "3.20.1" + "version": "3.20.1", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.20.1.tgz", + "integrity": "sha512-XMf1+O32FjYIV3CYu6Tuh5PNbfNEU5Xu22X+Xkdb/DUexFlCzhvv7d5Iirm4AOwn8lv4al1YvIhzGrg2j9Zfzw==" }, "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 }, "grpc-web": { - "version": "1.3.1" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/grpc-web/-/grpc-web-1.3.1.tgz", + "integrity": "sha512-VxyYEAGsatecAFY3xieRDzsuhm92yQBsJD7fd5Z3MY150hZWPwkrUWetzJ0QK5W0uym4+VedPQrei38wk0eIjQ==" }, "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": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "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", @@ -23039,6 +26605,8 @@ "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", @@ -23049,16 +26617,22 @@ }, "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 } } }, "hard-rejection": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "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" @@ -23066,6 +26640,8 @@ }, "has-ansi": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -23073,16 +26649,22 @@ "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 } } }, "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" @@ -23090,14 +26672,20 @@ }, "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", @@ -23107,15 +26695,21 @@ }, "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 }, "he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "peer": 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" @@ -23123,6 +26717,8 @@ }, "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", @@ -23133,6 +26729,8 @@ "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", @@ -23146,6 +26744,8 @@ }, "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" @@ -23155,18 +26755,26 @@ }, "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 }, "html-tags": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", "dev": true }, "htmlparser2": { "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "dev": true, "requires": { "domelementtype": "^1.3.1", @@ -23179,6 +26787,8 @@ "dependencies": { "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", @@ -23187,20 +26797,28 @@ "dependencies": { "domelementtype": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "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 }, "domhandler": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { "domelementtype": "1" @@ -23208,6 +26826,8 @@ }, "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", @@ -23216,20 +26836,28 @@ }, "entities": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true } } }, "http-cache-semantics": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, "http-deceiver": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true }, "http-errors": { "version": "2.0.0", + "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", @@ -23241,16 +26869,22 @@ "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.6", + "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", @@ -23260,6 +26894,8 @@ }, "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", @@ -23269,6 +26905,8 @@ }, "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", @@ -23280,12 +26918,16 @@ "dependencies": { "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 } } }, "http-signature": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -23295,6 +26937,8 @@ }, "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", @@ -23303,10 +26947,14 @@ }, "human-signals": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "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" @@ -23314,6 +26962,8 @@ }, "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" @@ -23321,18 +26971,26 @@ }, "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" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "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" @@ -23340,19 +26998,27 @@ }, "image-size": { "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, "optional": true }, "immediate": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true }, "immutable": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", "dev": true }, "import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -23361,28 +27027,40 @@ "dependencies": { "resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true } } }, "import-lazy": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "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", @@ -23391,14 +27069,20 @@ }, "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", @@ -23420,6 +27104,8 @@ "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" @@ -23427,6 +27113,8 @@ }, "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", @@ -23435,6 +27123,8 @@ }, "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" @@ -23442,14 +27132,20 @@ }, "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" @@ -23459,18 +27155,26 @@ }, "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-alphabetical": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true }, "is-alphanumerical": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, "requires": { "is-alphabetical": "^1.0.0", @@ -23479,10 +27183,14 @@ }, "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" @@ -23490,10 +27198,14 @@ }, "is-buffer": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true }, "is-ci": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, "requires": { "ci-info": "^3.2.0" @@ -23501,6 +27213,8 @@ }, "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" @@ -23508,21 +27222,31 @@ }, "is-decimal": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true }, "is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -23530,10 +27254,14 @@ }, "is-hexadecimal": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true }, "is-installed-globally": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "requires": { "global-dirs": "^3.0.0", @@ -23542,22 +27270,32 @@ }, "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-path-cwd": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", "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" @@ -23565,6 +27303,8 @@ "dependencies": { "is-path-inside": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", "dev": true, "requires": { "path-is-inside": "^1.0.1" @@ -23574,14 +27314,20 @@ }, "is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-plain-obj": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "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" @@ -23589,26 +27335,38 @@ }, "is-regexp": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, "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-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "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" @@ -23616,30 +27374,44 @@ }, "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 }, "isstream": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "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", @@ -23651,12 +27423,16 @@ "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", @@ -23666,10 +27442,14 @@ "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" @@ -23679,6 +27459,8 @@ }, "istanbul-lib-source-maps": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -23690,6 +27472,8 @@ "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", @@ -23698,6 +27482,8 @@ }, "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", @@ -23710,10 +27496,14 @@ }, "istanbul-lib-coverage": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, "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", @@ -23722,6 +27512,8 @@ }, "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" @@ -23729,10 +27521,14 @@ }, "pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "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" @@ -23740,16 +27536,22 @@ }, "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.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", @@ -23758,6 +27560,8 @@ }, "jake": { "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, "requires": { "async": "^3.2.3", @@ -23768,6 +27572,8 @@ "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" @@ -23775,6 +27581,8 @@ }, "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", @@ -23783,6 +27591,8 @@ }, "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", @@ -23791,6 +27601,8 @@ }, "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" @@ -23798,14 +27610,20 @@ }, "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 }, "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" @@ -23813,6 +27631,8 @@ }, "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" @@ -23822,6 +27642,8 @@ }, "jasmine": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==", "dev": true, "requires": { "exit": "^0.1.2", @@ -23831,6 +27653,8 @@ "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", @@ -23839,6 +27663,8 @@ }, "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", @@ -23851,10 +27677,14 @@ }, "jasmine-core": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==", "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" @@ -23863,11 +27693,15 @@ } }, "jasmine-core": { - "version": "4.1.1", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.2.0.tgz", + "integrity": "sha512-OcFpBrIhnbmb9wfI8cqPSJ50pv3Wg4/NSgoZIqHzIwO/2a9qivJWzv8hUvaREIMYYJBas6AvfXATFdVuzzCqVw==", "dev": true }, "jasmine-spec-reporter": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", "dev": true, "requires": { "colors": "1.4.0" @@ -23875,10 +27709,14 @@ }, "jasminewd2": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==", "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": "*", @@ -23888,10 +27726,14 @@ "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" @@ -23901,10 +27743,14 @@ }, "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", @@ -23913,42 +27759,62 @@ }, "jsbn": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "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-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": "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 }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json-stringify-safe": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "json5": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "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", @@ -23957,10 +27823,14 @@ }, "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 }, "jsonwebtoken": { "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "dev": true, "requires": { "jws": "^3.2.2", @@ -23977,12 +27847,16 @@ "dependencies": { "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, "jsprim": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", "dev": true, "requires": { "assert-plus": "1.0.0", @@ -23993,6 +27867,8 @@ }, "jszip": { "version": "3.10.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.0.tgz", + "integrity": "sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==", "dev": true, "requires": { "lie": "~3.3.0", @@ -24003,6 +27879,8 @@ "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", @@ -24016,6 +27894,8 @@ }, "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" @@ -24025,6 +27905,8 @@ }, "jwa": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, "requires": { "buffer-equal-constant-time": "1.0.1", @@ -24034,6 +27916,8 @@ }, "jws": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, "requires": { "jwa": "^1.4.1", @@ -24041,7 +27925,9 @@ } }, "karma": { - "version": "6.3.20", + "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", @@ -24072,6 +27958,8 @@ "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", @@ -24080,6 +27968,8 @@ }, "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", @@ -24092,6 +27982,8 @@ }, "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" @@ -24099,6 +27991,8 @@ }, "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" @@ -24106,10 +28000,14 @@ }, "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 }, "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", @@ -24123,12 +28021,16 @@ }, "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" @@ -24136,6 +28038,8 @@ "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" @@ -24145,6 +28049,8 @@ }, "karma-coverage-istanbul-reporter": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", @@ -24156,6 +28062,8 @@ "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", @@ -24164,6 +28072,8 @@ }, "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" @@ -24172,7 +28082,9 @@ } }, "karma-jasmine": { - "version": "5.0.1", + "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" @@ -24180,11 +28092,15 @@ }, "karma-jasmine-html-reporter": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", "dev": true, "requires": {} }, "karma-source-map-support": { "version": "1.4.0", + "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" @@ -24192,22 +28108,32 @@ }, "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 }, "known-css-properties": { "version": "0.21.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", + "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", "dev": true }, "lazy-ass": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "dev": true }, "less": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", + "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==", "dev": true, "requires": { "copy-anything": "^2.0.1", @@ -24224,6 +28150,8 @@ "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": { @@ -24233,21 +28161,29 @@ }, "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 } @@ -24255,6 +28191,8 @@ }, "less-loader": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz", + "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==", "dev": true, "requires": { "klona": "^2.0.4" @@ -24262,6 +28200,8 @@ }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -24269,10 +28209,14 @@ } }, "libphonenumber-js": { - "version": "1.10.6" + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.7.tgz", + "integrity": "sha512-jZXLCCWMe1b/HXkjiLeYt2JsytZMcqH26jLFIdzFDFF0xvSUWrYKyvPlyPG+XJzEyKUFbcZxLdWGMwQsWaHDxQ==" }, "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" @@ -24280,6 +28224,8 @@ }, "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" @@ -24287,10 +28233,14 @@ }, "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 }, "listr2": { "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "dev": true, "requires": { "cli-truncate": "^2.1.0", @@ -24305,83 +28255,123 @@ }, "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==", "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.camelcase": { - "version": "4.3.0" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, "lodash.debounce": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, "lodash.includes": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true }, "lodash.isboolean": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "dev": true }, "lodash.isempty": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==", "dev": true }, "lodash.isfunction": { "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", "dev": true }, "lodash.isinteger": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "dev": true }, "lodash.isnumber": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "dev": true }, "lodash.isobject": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", "dev": true }, "lodash.isplainobject": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true }, "lodash.isstring": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true }, "lodash.merge": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, "lodash.once": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, "lodash.sortby": { "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, "lodash.truncate": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "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", @@ -24390,6 +28380,8 @@ "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" @@ -24397,6 +28389,8 @@ }, "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", @@ -24405,6 +28399,8 @@ }, "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" @@ -24412,14 +28408,20 @@ }, "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" @@ -24429,6 +28431,8 @@ }, "log-update": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "requires": { "ansi-escapes": "^4.3.0", @@ -24439,6 +28443,8 @@ "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" @@ -24446,6 +28452,8 @@ }, "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" @@ -24453,10 +28461,14 @@ }, "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 }, "slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -24466,6 +28478,8 @@ }, "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", @@ -24477,6 +28491,8 @@ }, "log4js": { "version": "6.5.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.5.2.tgz", + "integrity": "sha512-DXtpNtt+KDOMT7RHUDIur/WsSA3rntlUh9Zg4XCdV42wUuMmbFkl38+LZ92Z5QvQA7mD5kAVkLiBSEH/tvUB8A==", "dev": true, "requires": { "date-format": "^4.0.10", @@ -24487,25 +28503,35 @@ } }, "long": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "longest-streak": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", "dev": true }, "loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } }, "lru-cache": { - "version": "7.10.1", + "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" @@ -24513,6 +28539,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" @@ -24520,12 +28548,16 @@ "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", @@ -24548,6 +28580,8 @@ "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", @@ -24556,6 +28590,8 @@ }, "@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", @@ -24564,6 +28600,8 @@ }, "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", @@ -24572,6 +28610,8 @@ }, "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", @@ -24596,6 +28636,8 @@ }, "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", @@ -24608,6 +28650,8 @@ }, "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" @@ -24615,6 +28659,8 @@ }, "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" @@ -24622,6 +28668,8 @@ }, "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" @@ -24631,20 +28679,30 @@ }, "map-obj": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true }, "material-colors": { - "version": "1.2.6" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" }, "material-design-icons-iconfont": { - "version": "6.7.0" + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/material-design-icons-iconfont/-/material-design-icons-iconfont-6.7.0.tgz", + "integrity": "sha512-lSj71DgVv20kO0kGbs42icDzbRot61gEDBLQACzkUuznRQBUYmbxzEkGU6dNBb5fRWHMaScYlAXX96HQ4/cJWA==" }, "mathml-tag-names": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true }, "mdast-util-from-markdown": { "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", "dev": true, "requires": { "@types/mdast": "^3.0.0", @@ -24656,6 +28714,8 @@ }, "mdast-util-to-markdown": { "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -24668,21 +28728,29 @@ }, "mdast-util-to-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "dev": true }, "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.4", + "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" + "fs-monkey": "^1.0.3" } }, "meow": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, "requires": { "@types/minimist": "^1.2.0", @@ -24701,6 +28769,8 @@ "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" @@ -24708,6 +28778,8 @@ }, "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" @@ -24715,6 +28787,8 @@ }, "normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "requires": { "hosted-git-info": "^4.0.1", @@ -24725,32 +28799,46 @@ }, "type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true }, "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 } } }, "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 }, "micromark": { "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", "dev": true, "requires": { "debug": "^4.0.0", @@ -24759,6 +28847,8 @@ }, "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", @@ -24767,14 +28857,20 @@ }, "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" @@ -24782,14 +28878,20 @@ }, "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 }, "min-indent": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true }, "mini-css-extract-plugin": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", "dev": true, "requires": { "schema-utils": "^4.0.0" @@ -24797,6 +28899,8 @@ "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", @@ -24809,10 +28913,14 @@ }, "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" @@ -24820,10 +28928,14 @@ }, "minimist": { "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, "requires": { "arrify": "^1.0.1", @@ -24832,7 +28944,9 @@ } }, "minipass": { - "version": "3.1.6", + "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" @@ -24840,6 +28954,8 @@ }, "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" @@ -24847,6 +28963,8 @@ }, "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", @@ -24857,6 +28975,8 @@ }, "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" @@ -24864,6 +28984,8 @@ }, "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", @@ -24872,6 +28994,8 @@ }, "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" @@ -24879,6 +29003,8 @@ }, "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" @@ -24886,6 +29012,8 @@ }, "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", @@ -24894,10 +29022,14 @@ }, "mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, "mocha": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", + "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", "dev": true, "peer": true, "requires": { @@ -24927,11 +29059,15 @@ "dependencies": { "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "peer": 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, "peer": true, "requires": { @@ -24941,11 +29077,15 @@ }, "escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "peer": true }, "find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "peer": true, "requires": { @@ -24955,6 +29095,8 @@ }, "glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "peer": true, "requires": { @@ -24968,6 +29110,8 @@ "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, "peer": true, "requires": { @@ -24978,11 +29122,15 @@ }, "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, "peer": true }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "peer": true, "requires": { @@ -24991,6 +29139,8 @@ }, "locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "peer": true, "requires": { @@ -24999,11 +29149,15 @@ }, "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, "peer": true }, "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, "peer": true, "requires": { @@ -25012,6 +29166,8 @@ }, "p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "peer": true, "requires": { @@ -25020,6 +29176,8 @@ }, "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, "peer": true, "requires": { @@ -25028,6 +29186,8 @@ }, "yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "peer": true, "requires": { @@ -25042,6 +29202,8 @@ }, "yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, "peer": true } @@ -25049,6 +29211,8 @@ }, "mochawesome": { "version": "7.1.3", + "resolved": "https://registry.npmjs.org/mochawesome/-/mochawesome-7.1.3.tgz", + "integrity": "sha512-Vkb3jR5GZ1cXohMQQ73H3cZz7RoxGjjUo0G5hu0jLaW+0FdUxUwg3Cj29bqQdh0rFcnyV06pWmqmi5eBPnEuNQ==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -25065,6 +29229,8 @@ "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" @@ -25072,6 +29238,8 @@ }, "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", @@ -25080,6 +29248,8 @@ }, "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" @@ -25087,14 +29257,20 @@ }, "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" @@ -25104,6 +29280,8 @@ }, "mochawesome-report-generator": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mochawesome-report-generator/-/mochawesome-report-generator-6.2.0.tgz", + "integrity": "sha512-Ghw8JhQFizF0Vjbtp9B0i//+BOkV5OWcQCPpbO0NGOoxV33o+gKDYU0Pr2pGxkIHnqZ+g5mYiXF7GMNgAcDpSg==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -25122,6 +29300,8 @@ "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" @@ -25129,6 +29309,8 @@ }, "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", @@ -25137,6 +29319,8 @@ }, "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" @@ -25144,10 +29328,14 @@ }, "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 }, "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", @@ -25157,10 +29345,14 @@ }, "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" @@ -25169,14 +29361,20 @@ } }, "moment": { - "version": "2.29.3" + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" }, "ms": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "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", @@ -25185,18 +29383,26 @@ }, "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.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, "natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "needle": { "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", "dev": true, "optional": true, "requires": { @@ -25207,6 +29413,8 @@ "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": { @@ -25217,14 +29425,20 @@ }, "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 }, "ng-qrcode": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ng-qrcode/-/ng-qrcode-7.0.0.tgz", + "integrity": "sha512-Mx7nf8rtGMVYxGe2qfy8/JNiCnxKD7uFsqpP2Hm5eJSQrOEapQl9FR0yuK0I4MMQorJ7s8mZZDxmszQiH8R2Kg==", "requires": { "qrcode": "^1.5.0", "tslib": "^2.4.0" @@ -25232,6 +29446,8 @@ }, "ngx-color": { "version": "7.3.3", + "resolved": "https://registry.npmjs.org/ngx-color/-/ngx-color-7.3.3.tgz", + "integrity": "sha512-RyMIFMC5/aYYD/jkfStOUjr3gQfTGhgiiMxuZEfxt2o4GYmb3C/06C1o0S6Mj9qHAcKlG6soioq2MzdhtIswHw==", "requires": { "@ctrl/tinycolor": "^3.4.0", "material-colors": "^1.2.6", @@ -25240,12 +29456,16 @@ }, "ngx-quicklink": { "version": "0.2.7", + "resolved": "https://registry.npmjs.org/ngx-quicklink/-/ngx-quicklink-0.2.7.tgz", + "integrity": "sha512-5ZSUCu79dTqLNqDTsXDzofaSjB1ddOxfSMUVR4gmg0mDI2M/6G/ASgs9tVM2LoR8on3wp2ExLGHOHvzg7qWkRA==", "requires": { "tslib": "^2.0.0" } }, "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": { @@ -25255,14 +29475,20 @@ }, "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 }, "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", @@ -25279,6 +29505,8 @@ "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", @@ -25287,6 +29515,8 @@ }, "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", @@ -25299,6 +29529,8 @@ }, "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" @@ -25307,15 +29539,21 @@ } }, "node-gyp-build": { - "version": "4.4.0", + "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 }, "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" @@ -25323,6 +29561,8 @@ }, "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", @@ -25333,18 +29573,26 @@ }, "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 }, "normalize-selector": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==", "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" @@ -25352,6 +29600,8 @@ }, "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" @@ -25359,10 +29609,14 @@ }, "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", @@ -25371,7 +29625,9 @@ } }, "npm-packlist": { - "version": "5.1.0", + "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", @@ -25382,6 +29638,8 @@ }, "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", @@ -25392,6 +29650,8 @@ }, "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", @@ -25405,10 +29665,14 @@ "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", @@ -25433,6 +29697,8 @@ }, "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", @@ -25441,7 +29707,9 @@ } }, "make-fetch-happen": { - "version": "10.1.7", + "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", @@ -25464,6 +29732,8 @@ }, "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", @@ -25474,6 +29744,8 @@ }, "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", @@ -25485,6 +29757,8 @@ }, "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" @@ -25492,6 +29766,8 @@ }, "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", @@ -25502,6 +29778,8 @@ }, "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" @@ -25509,10 +29787,14 @@ }, "num2fraction": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", "dev": true }, "nx": { "version": "13.1.3", + "resolved": "https://registry.npmjs.org/nx/-/nx-13.1.3.tgz", + "integrity": "sha512-clM0NQhQKYkqcNz2E3uYRMLwhp2L/9dBhJhQi9XBX4IAyA2gWAomhRIlLm5Xxg3g4h1xwSpP3eJ5t89VikY8Pw==", "dev": true, "requires": { "@nrwl/cli": "*" @@ -25520,21 +29802,31 @@ }, "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" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "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", @@ -25545,10 +29837,14 @@ }, "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" @@ -25556,10 +29852,14 @@ }, "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" @@ -25567,6 +29867,8 @@ }, "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" @@ -25574,6 +29876,8 @@ }, "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", @@ -25583,10 +29887,14 @@ }, "opener": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true }, "optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -25599,6 +29907,8 @@ }, "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", @@ -25614,6 +29924,8 @@ "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" @@ -25621,6 +29933,8 @@ }, "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", @@ -25629,6 +29943,8 @@ }, "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" @@ -25636,14 +29952,20 @@ }, "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" @@ -25653,26 +29975,36 @@ }, "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 }, "ospath": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", "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==", "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==", "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" @@ -25680,6 +30012,8 @@ }, "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", @@ -25688,15 +30022,21 @@ "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" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "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", @@ -25724,10 +30064,14 @@ }, "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" @@ -25735,6 +30079,8 @@ }, "parse-entities": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dev": true, "requires": { "character-entities": "^1.0.0", @@ -25747,6 +30093,8 @@ }, "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", @@ -25757,14 +30105,20 @@ }, "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", @@ -25773,12 +30127,16 @@ "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" @@ -25786,12 +30144,16 @@ "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" @@ -25799,67 +30161,99 @@ "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" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "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-is-inside": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "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 }, "pend": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "performance-now": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "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 }, "pinkie": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -25867,6 +30261,8 @@ }, "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", @@ -25877,16 +30273,22 @@ }, "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" } }, "pngjs": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" }, "postcss": { "version": "8.4.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", + "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", "dev": true, "requires": { "nanoid": "^3.3.3", @@ -25896,6 +30298,8 @@ }, "postcss-attribute-case-insensitive": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.1.tgz", + "integrity": "sha512-wrt2VndqSLJpyBRNz9OmJcgnhI9MaongeWgapdBuUMu2a/KNJ8SENesG4SdiTnQwGO9b1VKbTWYAfCPeokLqZQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -25903,6 +30307,8 @@ }, "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" @@ -25910,6 +30316,8 @@ }, "postcss-color-functional-notation": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz", + "integrity": "sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -25917,6 +30325,8 @@ }, "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" @@ -25924,6 +30334,8 @@ }, "postcss-color-rebeccapurple": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.0.tgz", + "integrity": "sha512-1jtE5AKnZcKq4pjOrltFHcbEM2/IvtbD1OdhZ/wqds18//bh0UmQkffcCkzDJU+/vGodfIsVQeKn+45CJvX9Bw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -25931,6 +30343,8 @@ }, "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" @@ -25938,6 +30352,8 @@ }, "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" @@ -25945,6 +30361,8 @@ }, "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" @@ -25952,6 +30370,8 @@ }, "postcss-dir-pseudo-class": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", + "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.9" @@ -25959,6 +30379,8 @@ }, "postcss-double-position-gradients": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", + "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -25967,6 +30389,8 @@ }, "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" @@ -25974,6 +30398,8 @@ }, "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" @@ -25981,6 +30407,8 @@ }, "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" @@ -25988,16 +30416,22 @@ }, "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.3", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", + "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", "dev": true, "requires": {} }, "postcss-html": { "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", "dev": true, "requires": { "htmlparser2": "^3.10.0" @@ -26005,6 +30439,8 @@ }, "postcss-image-set-function": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", + "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -26012,6 +30448,8 @@ }, "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", @@ -26021,11 +30459,15 @@ }, "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.0", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz", + "integrity": "sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -26034,6 +30476,8 @@ }, "postcss-less": { "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", "dev": true, "requires": { "postcss": "^7.0.14" @@ -26041,10 +30485,14 @@ "dependencies": { "picocolors": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, "postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { "picocolors": "^0.2.1", @@ -26053,12 +30501,16 @@ }, "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 } } }, "postcss-loader": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, "requires": { "cosmiconfig": "^7.0.0", @@ -26068,25 +30520,35 @@ }, "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-media-query-parser": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", "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, "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", @@ -26096,6 +30558,8 @@ }, "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" @@ -26103,13 +30567,17 @@ }, "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.8", + "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", @@ -26118,20 +30586,28 @@ }, "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.3", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", + "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", "dev": true, "requires": {} }, "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.4", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", + "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -26139,6 +30615,8 @@ }, "postcss-preset-env": { "version": "7.5.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.5.0.tgz", + "integrity": "sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==", "dev": true, "requires": { "@csstools/postcss-color-function": "^1.1.0", @@ -26189,7 +30667,9 @@ } }, "postcss-pseudo-class-any-link": { - "version": "7.1.4", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.5.tgz", + "integrity": "sha512-nSGKGScwFTaaV8Cyi27W9FegX3l3b7tmNxujxmykI/j3++cBAiq8fTUAU3ZK0s2aneN2T8cTUvKdNedzp3JIEA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -26197,15 +30677,21 @@ }, "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-resolve-nested-selector": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", "dev": true }, "postcss-safe-parser": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", "dev": true, "requires": { "postcss": "^7.0.26" @@ -26213,10 +30699,14 @@ "dependencies": { "picocolors": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, "postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { "picocolors": "^0.2.1", @@ -26225,12 +30715,16 @@ }, "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 } } }, "postcss-sass": { "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", "dev": true, "requires": { "gonzales-pe": "^4.3.0", @@ -26239,10 +30733,14 @@ "dependencies": { "picocolors": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, "postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { "picocolors": "^0.2.1", @@ -26251,12 +30749,16 @@ }, "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 } } }, "postcss-scss": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", "dev": true, "requires": { "postcss": "^7.0.6" @@ -26264,10 +30766,14 @@ "dependencies": { "picocolors": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, "postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { "picocolors": "^0.2.1", @@ -26276,12 +30782,16 @@ }, "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 } } }, "postcss-selector-not": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", + "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -26289,6 +30799,8 @@ }, "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", @@ -26297,39 +30809,57 @@ }, "postcss-syntax": { "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", "dev": true, "requires": {} }, "postcss-value-parser": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prettier": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "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", @@ -26338,6 +30868,8 @@ }, "prop-types": { "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "requires": { "loose-envify": "^1.4.0", @@ -26347,6 +30879,8 @@ }, "protobufjs": { "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -26365,6 +30899,8 @@ }, "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", @@ -26386,14 +30922,20 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "ansi-styles": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "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", @@ -26402,6 +30944,8 @@ }, "chalk": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -26413,6 +30957,8 @@ }, "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", @@ -26422,10 +30968,14 @@ "dependencies": { "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 }, "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" @@ -26435,6 +30985,8 @@ }, "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" @@ -26442,10 +30994,14 @@ }, "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.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", @@ -26458,6 +31014,8 @@ }, "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" @@ -26465,10 +31023,14 @@ }, "source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "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" @@ -26476,6 +31038,8 @@ }, "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" @@ -26483,10 +31047,14 @@ }, "supports-color": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true }, "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", @@ -26496,10 +31064,14 @@ "dependencies": { "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": "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" @@ -26507,6 +31079,8 @@ }, "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" @@ -26516,10 +31090,14 @@ }, "y18n": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "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", @@ -26537,6 +31115,8 @@ }, "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", @@ -26547,6 +31127,8 @@ }, "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", @@ -26555,25 +31137,35 @@ "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 } } }, "proxy-from-env": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", "dev": true }, "prr": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, "optional": true }, "psl": { - "version": "1.8.0", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "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", @@ -26582,18 +31174,26 @@ }, "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.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==", "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 }, "qrcode": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==", "requires": { "dijkstrajs": "^1.0.1", "encode-utf8": "^1.0.3", @@ -26603,12 +31203,16 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { "color-convert": "^2.0.1" } }, "cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -26617,15 +31221,21 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "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==", "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -26633,10 +31243,14 @@ } }, "y18n": { - "version": "4.0.3" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -26653,6 +31267,8 @@ }, "yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -26662,18 +31278,26 @@ }, "qs": { "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, "queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "quick-lru": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "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" @@ -26681,10 +31305,14 @@ }, "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", @@ -26695,10 +31323,14 @@ }, "react-is": { "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "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" @@ -26706,6 +31338,8 @@ }, "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", @@ -26716,6 +31350,8 @@ }, "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", @@ -26724,6 +31360,8 @@ }, "read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { "@types/normalize-package-data": "^2.4.0", @@ -26734,10 +31372,14 @@ "dependencies": { "hosted-git-info": { "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -26748,16 +31390,22 @@ }, "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true } } }, "read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { "find-up": "^4.1.0", @@ -26767,12 +31415,16 @@ "dependencies": { "type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true } } }, "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", @@ -26782,6 +31434,8 @@ }, "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" @@ -26789,6 +31443,8 @@ }, "redent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, "requires": { "indent-string": "^4.0.0", @@ -26797,14 +31453,20 @@ }, "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" @@ -26812,10 +31474,14 @@ }, "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" @@ -26823,14 +31489,20 @@ }, "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 }, "regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { - "version": "5.0.1", + "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", @@ -26843,10 +31515,14 @@ }, "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" @@ -26854,12 +31530,16 @@ "dependencies": { "jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } }, "remark": { "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", "dev": true, "requires": { "remark-parse": "^9.0.0", @@ -26869,6 +31549,8 @@ }, "remark-parse": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", "dev": true, "requires": { "mdast-util-from-markdown": "^0.8.0" @@ -26876,6 +31558,8 @@ }, "remark-stringify": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "dev": true, "requires": { "mdast-util-to-markdown": "^0.6.0" @@ -26883,10 +31567,14 @@ }, "repeat-string": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "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", @@ -26913,6 +31601,8 @@ "dependencies": { "http-signature": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -26922,6 +31612,8 @@ }, "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", @@ -26932,33 +31624,47 @@ }, "uuid": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true } } }, "request-progress": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, "requires": { "throttleit": "^1.0.0" } }, "require-directory": { - "version": "2.1.1" + "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==" }, "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 }, "require-main-filename": { - "version": "2.0.0" + "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==" }, "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", @@ -26968,10 +31674,14 @@ }, "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", @@ -26983,6 +31693,8 @@ "dependencies": { "loader-utils": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -26992,12 +31704,16 @@ }, "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", @@ -27006,18 +31722,26 @@ }, "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" @@ -27025,6 +31749,8 @@ "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", @@ -27033,6 +31759,8 @@ }, "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", @@ -27045,6 +31773,8 @@ }, "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" @@ -27054,10 +31784,14 @@ }, "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" @@ -27065,20 +31799,28 @@ }, "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.51.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz", + "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -27088,6 +31830,8 @@ }, "sass-loader": { "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", "dev": true, "requires": { "klona": "^2.0.4", @@ -27096,6 +31840,8 @@ }, "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" @@ -27103,6 +31849,8 @@ "dependencies": { "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" @@ -27110,6 +31858,8 @@ }, "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" @@ -27117,6 +31867,8 @@ }, "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", @@ -27127,10 +31879,14 @@ }, "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", @@ -27140,6 +31896,8 @@ "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", @@ -27150,21 +31908,29 @@ }, "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 }, "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", @@ -27175,6 +31941,8 @@ "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", @@ -27183,6 +31951,8 @@ }, "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", @@ -27195,6 +31965,8 @@ }, "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" @@ -27202,6 +31974,8 @@ }, "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" @@ -27209,6 +31983,8 @@ }, "tmp": { "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", "dev": true, "requires": { "os-tmpdir": "~1.0.1" @@ -27218,6 +31994,8 @@ }, "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" @@ -27225,6 +32003,8 @@ }, "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" @@ -27232,6 +32012,8 @@ "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" @@ -27241,6 +32023,8 @@ }, "semver-dsl": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==", "dev": true, "requires": { "semver": "^5.3.0" @@ -27248,12 +32032,16 @@ "dependencies": { "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "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", @@ -27273,6 +32061,8 @@ "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" @@ -27280,26 +32070,36 @@ "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" @@ -27307,6 +32107,8 @@ }, "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", @@ -27320,6 +32122,8 @@ "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" @@ -27327,10 +32131,14 @@ }, "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", @@ -27341,20 +32149,28 @@ }, "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", @@ -27364,18 +32180,26 @@ } }, "set-blocking": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "setimmediate": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "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" @@ -27383,6 +32207,8 @@ }, "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" @@ -27390,10 +32216,14 @@ }, "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", @@ -27403,14 +32233,20 @@ }, "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": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -27420,6 +32256,8 @@ "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" @@ -27427,6 +32265,8 @@ }, "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" @@ -27434,16 +32274,22 @@ }, "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 } } }, "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", @@ -27456,10 +32302,14 @@ }, "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.4", + "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", @@ -27469,6 +32319,8 @@ }, "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", @@ -27478,6 +32330,8 @@ }, "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", @@ -27486,6 +32340,8 @@ }, "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", @@ -27495,14 +32351,20 @@ }, "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": "3.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", + "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", "dev": true, "requires": { "abab": "^2.0.5", @@ -27512,6 +32374,8 @@ "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" @@ -27521,6 +32385,8 @@ }, "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", @@ -27529,6 +32395,8 @@ }, "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", @@ -27537,16 +32405,22 @@ "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", @@ -27555,10 +32429,14 @@ }, "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", @@ -27567,10 +32445,14 @@ }, "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", @@ -27582,6 +32464,8 @@ }, "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", @@ -27594,14 +32478,20 @@ }, "specificity": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", "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 }, "sshpk": { "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -27617,6 +32507,8 @@ }, "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" @@ -27624,10 +32516,14 @@ }, "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", @@ -27637,6 +32533,8 @@ "dependencies": { "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", @@ -27648,6 +32546,8 @@ }, "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" @@ -27655,12 +32555,16 @@ "dependencies": { "safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true } } }, "string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -27669,20 +32573,28 @@ }, "strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" } }, "strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "strip-indent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "requires": { "min-indent": "^1.0.0" @@ -27690,14 +32602,20 @@ }, "strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "style-search": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "dev": true }, "stylelint": { "version": "13.13.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", + "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", "dev": true, "requires": { "@stylelint/postcss-css-in-js": "^0.37.2", @@ -27752,6 +32670,8 @@ "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" @@ -27759,6 +32679,8 @@ }, "autoprefixer": { "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, "requires": { "browserslist": "^4.12.0", @@ -27772,10 +32694,14 @@ }, "balanced-match": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -27784,6 +32710,8 @@ }, "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" @@ -27791,18 +32719,26 @@ }, "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 }, "picocolors": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, "postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { "picocolors": "^0.2.1", @@ -27811,10 +32747,14 @@ }, "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": "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" @@ -27824,11 +32764,15 @@ }, "stylelint-config-recommended": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", + "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", "dev": true, "requires": {} }, "stylelint-config-standard": { "version": "22.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-22.0.0.tgz", + "integrity": "sha512-uQVNi87SHjqTm8+4NIP5NMAyY/arXrBgimaaT7skvRfE9u3JKXRK9KBkbr4pVmeciuCcs64kAdjlxfq6Rur7Hw==", "dev": true, "requires": { "stylelint-config-recommended": "^5.0.0" @@ -27836,6 +32780,8 @@ }, "stylelint-scss": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.21.0.tgz", + "integrity": "sha512-CMI2wSHL+XVlNExpauy/+DbUcB/oUZLARDtMIXkpV/5yd8nthzylYd1cdHeDMJVBXeYHldsnebUX6MoV5zPW4A==", "dev": true, "requires": { "lodash": "^4.17.15", @@ -27847,6 +32793,8 @@ }, "stylus": { "version": "0.57.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz", + "integrity": "sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==", "dev": true, "requires": { "css": "^3.0.0", @@ -27859,6 +32807,8 @@ "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", @@ -27867,6 +32817,8 @@ }, "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", @@ -27879,6 +32831,8 @@ }, "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" @@ -27888,6 +32842,8 @@ }, "stylus-loader": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.2.0.tgz", + "integrity": "sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==", "dev": true, "requires": { "fast-glob": "^3.2.7", @@ -27897,6 +32853,8 @@ }, "sugarss": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", "dev": true, "requires": { "postcss": "^7.0.2" @@ -27904,10 +32862,14 @@ "dependencies": { "picocolors": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, "postcss": { "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { "picocolors": "^0.2.1", @@ -27916,12 +32878,16 @@ }, "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": "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" @@ -27929,18 +32895,26 @@ }, "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 }, "svg-tags": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "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 }, "table": { "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", "dev": true, "requires": { "ajv": "^8.0.1", @@ -27952,6 +32926,8 @@ "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" @@ -27959,6 +32935,8 @@ }, "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" @@ -27966,10 +32944,14 @@ }, "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 }, "slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -27981,10 +32963,14 @@ }, "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", @@ -27997,6 +32983,8 @@ }, "tar-stream": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "requires": { "bl": "^4.0.3", @@ -28008,10 +32996,14 @@ }, "tcomb": { "version": "3.2.29", + "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-3.2.29.tgz", + "integrity": "sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ==", "dev": true }, "tcomb-validation": { "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tcomb-validation/-/tcomb-validation-3.4.1.tgz", + "integrity": "sha512-urVVMQOma4RXwiVCa2nM2eqrAomHROHvWPuj6UkDGz/eb5kcy0x6P0dVt6kzpUZtYMNoAqJLWmz1BPtxrtjtrA==", "dev": true, "requires": { "tcomb": "^3.0.0" @@ -28019,6 +33011,8 @@ }, "terser": { "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", "dev": true, "requires": { "acorn": "^8.5.0", @@ -28029,10 +33023,14 @@ "dependencies": { "commander": { "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "source-map": { "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, "requires": { "whatwg-url": "^7.0.0" @@ -28042,6 +33040,8 @@ }, "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", @@ -28053,6 +33053,8 @@ "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", @@ -28063,15 +33065,21 @@ }, "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", @@ -28083,6 +33091,8 @@ }, "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", @@ -28092,6 +33102,8 @@ "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", @@ -28100,6 +33112,8 @@ }, "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", @@ -28112,6 +33126,8 @@ }, "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" @@ -28121,25 +33137,37 @@ }, "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 }, "throttleit": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", "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 }, "tinycolor2": { - "version": "1.4.2" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" }, "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" @@ -28147,10 +33175,14 @@ }, "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" @@ -28158,10 +33190,14 @@ }, "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 }, "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", @@ -28170,6 +33206,8 @@ }, "tr46": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -28177,18 +33215,26 @@ }, "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 }, "trim-newlines": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, "trough": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true }, "tsconfig-paths": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -28199,6 +33245,8 @@ "dependencies": { "json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -28207,10 +33255,14 @@ } }, "tslib": { - "version": "2.4.0" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "tslint": { "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", "dev": true, "peer": true, "requires": { @@ -28231,6 +33283,8 @@ "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, "peer": true, "requires": { @@ -28240,16 +33294,22 @@ }, "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, "peer": true }, "diff": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, "peer": true }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "peer": true, "requires": { @@ -28263,6 +33323,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "peer": true, "requires": { @@ -28271,6 +33333,8 @@ }, "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, "peer": true, "requires": { @@ -28279,16 +33343,22 @@ }, "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, "peer": true }, "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, "peer": true }, "tsutils": { "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, "peer": true, "requires": { @@ -28299,6 +33369,8 @@ }, "tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -28306,12 +33378,16 @@ "dependencies": { "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "tunnel-agent": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -28319,14 +33395,20 @@ }, "tv4": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", "dev": true }, "tweetnacl": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -28334,10 +33416,14 @@ }, "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", @@ -28346,29 +33432,41 @@ }, "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 }, "typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { "is-typedarray": "^1.0.0" } }, "typescript": { - "version": "4.7.3", + "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.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", "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", @@ -28377,14 +33475,20 @@ }, "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 }, "unified": { "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", "dev": true, "requires": { "bail": "^1.0.0", @@ -28397,12 +33501,16 @@ "dependencies": { "is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "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" @@ -28410,6 +33518,8 @@ }, "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" @@ -28417,6 +33527,8 @@ }, "unist-util-find-all-after": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", "dev": true, "requires": { "unist-util-is": "^4.0.0" @@ -28424,10 +33536,14 @@ }, "unist-util-is": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "dev": true }, "unist-util-stringify-position": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dev": true, "requires": { "@types/unist": "^2.0.2" @@ -28435,18 +33551,36 @@ }, "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 }, "untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "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" @@ -28454,21 +33588,31 @@ }, "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" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8-compile-cache": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "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", @@ -28477,6 +33621,8 @@ }, "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" @@ -28484,13 +33630,19 @@ }, "validator": { "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", "dev": true }, "vary": { - "version": "1.1.2" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, "verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -28500,6 +33652,8 @@ }, "vfile": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -28510,6 +33664,8 @@ }, "vfile-message": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -28518,13 +33674,19 @@ }, "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 }, "walkdir": { - "version": "0.4.1" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz", + "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==" }, "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", @@ -28533,6 +33695,8 @@ }, "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" @@ -28540,6 +33704,8 @@ }, "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" @@ -28547,6 +33713,8 @@ }, "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", @@ -28555,6 +33723,8 @@ }, "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", @@ -28572,14 +33742,20 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "ansi-styles": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "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", @@ -28588,6 +33764,8 @@ }, "chalk": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -28599,6 +33777,8 @@ }, "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", @@ -28611,10 +33791,14 @@ }, "ini": { "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "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" @@ -28622,6 +33806,8 @@ }, "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" @@ -28629,10 +33815,14 @@ }, "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "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" @@ -28640,16 +33830,22 @@ }, "supports-color": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true } } }, "webidl-conversions": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, "webpack": { "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -28678,8 +33874,16 @@ "webpack-sources": "^3.2.3" }, "dependencies": { + "@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 + }, "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", @@ -28690,15 +33894,21 @@ }, "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", @@ -28710,6 +33920,8 @@ }, "webpack-dev-middleware": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", "dev": true, "requires": { "colorette": "^2.0.10", @@ -28721,6 +33933,8 @@ "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", @@ -28733,6 +33947,8 @@ }, "webpack-dev-server": { "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -28767,6 +33983,8 @@ "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", @@ -28777,6 +33995,8 @@ }, "ws": { "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", "dev": true, "requires": {} } @@ -28784,6 +34004,8 @@ }, "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", @@ -28792,10 +34014,14 @@ }, "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" @@ -28803,6 +34029,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", @@ -28812,10 +34040,14 @@ }, "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-url": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", @@ -28825,16 +34057,22 @@ }, "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, "which-module": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" }, "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" @@ -28842,19 +34080,27 @@ }, "wildcard": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, "word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "workerpool": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true, "peer": 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==", "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -28863,27 +34109,37 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { "color-convert": "^2.0.1" } }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, "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 }, "write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -28894,11 +34150,15 @@ }, "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": {} }, "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", @@ -28907,21 +34167,31 @@ }, "xmlbuilder": { "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, "y18n": { - "version": "5.0.8" + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "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", @@ -28935,16 +34205,22 @@ "dependencies": { "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 } } }, "yargs-parser": { "version": "20.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.0.0.tgz", + "integrity": "sha512-8eblPHTL7ZWRkyjIZJjnGf+TijiKJSwA24svzLRVvtgoi/RZiKa9fFQTrlx0OKLnyHSdt/enrdadji6WFfESVA==", "dev": true }, "yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "peer": true, "requires": { @@ -28956,16 +34232,22 @@ "dependencies": { "camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "peer": true }, "decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "peer": true }, "is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "peer": true } @@ -28973,6 +34255,8 @@ }, "yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "requires": { "buffer-crc32": "~0.2.3", @@ -28981,17 +34265,23 @@ }, "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, "peer": 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" } }, "zwitch": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", "dev": true } } diff --git a/console/package.json b/console/package.json index bbcec24eac4..2db0c1dc520 100644 --- a/console/package.json +++ b/console/package.json @@ -12,18 +12,18 @@ }, "private": true, "dependencies": { - "@angular/animations": "^14.0.1", - "@angular/cdk": "^14.0.1", - "@angular/common": "^14.0.1", - "@angular/compiler": "^14.0.1", - "@angular/core": "^14.0.1", - "@angular/forms": "^14.0.1", - "@angular/material": "^14.0.1", - "@angular/material-moment-adapter": "^14.0.1", - "@angular/platform-browser": "^14.0.1", - "@angular/platform-browser-dynamic": "^14.0.1", - "@angular/router": "^14.0.1", - "@angular/service-worker": "^14.0.1", + "@angular/animations": "^14.0.4", + "@angular/cdk": "^14.0.4", + "@angular/common": "^14.0.4", + "@angular/compiler": "^14.0.4", + "@angular/core": "^14.0.4", + "@angular/forms": "^14.0.4", + "@angular/material": "^14.0.4", + "@angular/material-moment-adapter": "^14.0.4", + "@angular/platform-browser": "^14.0.4", + "@angular/platform-browser-dynamic": "^14.0.4", + "@angular/router": "^14.0.4", + "@angular/service-worker": "^14.0.4", "@ctrl/ngx-codemirror": "^5.1.1", "@grpc/grpc-js": "^1.5.7", "@ngx-translate/core": "^14.0.0", @@ -36,7 +36,7 @@ "codemirror": "^5.65.0", "cors": "^2.8.5", "file-saver": "^2.0.5", - "google-proto-files": "^2.5.0", + "google-proto-files": "^3.0.0", "google-protobuf": "^3.19.4", "grpc-web": "^1.3.0", "libphonenumber-js": "^1.10.6", @@ -52,32 +52,32 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^14.0.1", - "@angular-eslint/builder": "^14.0.0-alpha.3", - "@angular-eslint/eslint-plugin": "^14.0.0-alpha.3", - "@angular-eslint/eslint-plugin-template": "^14.0.0-alpha.3", - "@angular-eslint/schematics": "^14.0.0-alpha.3", - "@angular-eslint/template-parser": "^14.0.0-alpha.3", - "@angular/cli": "^14.0.1", - "@angular/compiler-cli": "^14.0.1", - "@angular/language-service": "^14.0.1", + "@angular-devkit/build-angular": "^14.0.4", + "@angular-eslint/builder": "^14.0.0", + "@angular-eslint/eslint-plugin": "^14.0.0", + "@angular-eslint/eslint-plugin-template": "^14.0.0", + "@angular-eslint/schematics": "^14.0.0", + "@angular-eslint/template-parser": "^14.0.0", + "@angular/cli": "^14.0.4", + "@angular/compiler-cli": "^14.0.4", + "@angular/language-service": "^14.0.4", "@types/jasmine": "~4.0.3", "@types/jasminewd2": "~2.0.10", "@types/jsonwebtoken": "^8.5.5", "@types/node": "^17.0.42", - "@typescript-eslint/eslint-plugin": "5.25.0", - "@typescript-eslint/parser": "5.27.0", + "@typescript-eslint/eslint-plugin": "5.30.4", + "@typescript-eslint/parser": "5.30.4", "codelyzer": "^6.0.0", "cypress": "^10.1.0", "cypress-terminal-report": "^4.0.1", - "eslint": "^8.17.0", - "jasmine-core": "~4.1.1", + "eslint": "^8.18.0", + "jasmine-core": "~4.2.0", "jasmine-spec-reporter": "~7.0.0", "jsonwebtoken": "^8.5.1", - "karma": "~6.3.16", + "karma": "~6.4.0", "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "~3.0.2", - "karma-jasmine": "~5.0.1", + "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "^2.0.0", "mochawesome": "^7.1.2", "prettier": "^2.4.1", diff --git a/console/src/index.html b/console/src/index.html index 3cf14828866..2fe19fbca6e 100644 --- a/console/src/index.html +++ b/console/src/index.html @@ -1,34 +1,31 @@ - + - - + Console - - - + + + - - + + - - - - + + + - + - - \ No newline at end of file + From 2b7600e6e8f379ad6b25b1854e14adec71654ac7 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Fri, 8 Jul 2022 10:07:17 +0200 Subject: [PATCH 14/17] test(e2e): migrate e2e setup --- cmd/e2e-setup/config.go | 118 +++++++++++++++ cmd/e2e-setup/consistency.go | 65 ++++++++ cmd/e2e-setup/execute.go | 110 ++++++++++++++ cmd/e2e-setup/main.go | 139 ++++++++++++++++++ cmd/e2e-setup/token.go | 85 +++++++++++ cmd/e2e-setup/users.go | 52 +++++++ cmd/start/config.go | 30 ++-- cmd/start/start_from_init.go | 3 +- cmd/zitadel.go | 22 +-- console/e2e.env | 14 -- .../installation/configure/configure.mdx | 4 +- .../configure/example-zitadel-config.yaml | 2 +- .../configure/example-zitadel-secrets.yaml | 2 +- .../example-zitadel-values-secrets.yaml | 2 +- .../configure/example-zitadel-values.yaml | 2 +- .../example-zitadel-config.yaml | 2 +- .../example-zitadel-secrets.yaml | 2 +- {console => e2e}/cypress.sh | 0 e2e/docker-compose-overwrite.yaml | 1 - e2e/docker-compose.sh | 3 + e2e/e2e-setup-debug.sh | 11 ++ e2e/{run.sh => install.sh} | 12 +- e2e/local.env | 14 ++ internal/config/options/defaults.go | 8 + .../config/options}/defaults.yaml | 0 internal/config/options/viper.go | 30 ++++ 26 files changed, 668 insertions(+), 65 deletions(-) create mode 100644 cmd/e2e-setup/config.go create mode 100644 cmd/e2e-setup/consistency.go create mode 100644 cmd/e2e-setup/execute.go create mode 100644 cmd/e2e-setup/main.go create mode 100644 cmd/e2e-setup/token.go create mode 100644 cmd/e2e-setup/users.go delete mode 100644 console/e2e.env rename {console => e2e}/cypress.sh (100%) create mode 100755 e2e/docker-compose.sh create mode 100755 e2e/e2e-setup-debug.sh rename e2e/{run.sh => install.sh} (73%) create mode 100644 e2e/local.env create mode 100644 internal/config/options/defaults.go rename {cmd => internal/config/options}/defaults.yaml (100%) create mode 100644 internal/config/options/viper.go diff --git a/cmd/e2e-setup/config.go b/cmd/e2e-setup/config.go new file mode 100644 index 00000000000..1a6bbac218b --- /dev/null +++ b/cmd/e2e-setup/config.go @@ -0,0 +1,118 @@ +package main + +import ( + "errors" + "fmt" + "regexp" + + "github.com/zitadel/zitadel/internal/id" + + "github.com/zitadel/zitadel/internal/database" + + internal_authz "github.com/zitadel/zitadel/internal/api/authz" + + static_config "github.com/zitadel/zitadel/internal/static/config" + + "github.com/zitadel/zitadel/internal/config/systemdefaults" + + "github.com/mitchellh/mapstructure" + "github.com/spf13/viper" + "github.com/zitadel/logging" + "github.com/zitadel/zitadel/internal/config/hook" +) + +type Config struct { + E2E *E2EConfig + Log *logging.Config + ExternalPort uint16 + ExternalDomain string + ExternalSecure bool + Database database.Config + AssetStorage static_config.AssetStorageConfig + WebAuthNName string + InternalAuthZ internal_authz.Config + Machine *id.Config + SystemDefaults systemdefaults.SystemDefaults +} + +func (c Config) Validate() error { + if c.E2E == nil { + return errors.New("no e2e config found") + } + return c.E2E.Validate() +} + +type E2EConfig struct { + Org string + MachineKeyPath string + ZitadelProjectResourceID string + APIURL string + IssuerURL string + Audience string + OrgOwnerPassword string + OrgOwnerViewerPassword string + OrgProjectCreatorPassword string + PasswordComplexityUserPassword string + LoginPolicyUserPassword string +} + +func (e E2EConfig) Validate() (err error) { + if e.Org == "" { + return errors.New("field Org is empty") + } + if e.MachineKeyPath == "" { + return errors.New("field MachineKeyPath is empty") + } + if e.ZitadelProjectResourceID == "" { + return errors.New("field ZitadelProjectResourceID is empty") + } + + audPattern := "number-[0-9]{17}" + matched, err := regexp.MatchString("number-[0-9]{17}", e.ZitadelProjectResourceID) + if err != nil { + return fmt.Errorf("validating ZitadelProjectResourceID failed: %w", err) + } + if !matched { + return fmt.Errorf("ZitadelProjectResourceID doesn't match regular expression %s", audPattern) + } + + if e.APIURL == "" { + return errors.New("field APIURL is empty") + } + if e.IssuerURL == "" { + return errors.New("field IssuerURL is empty") + } + if e.OrgOwnerPassword == "" { + return errors.New("field OrgOwnerPassword is empty") + } + if e.OrgOwnerViewerPassword == "" { + return errors.New("field OrgOwnerViewerPassword is empty") + } + if e.OrgProjectCreatorPassword == "" { + return errors.New("field OrgProjectCreatorPassword is empty") + } + if e.PasswordComplexityUserPassword == "" { + return errors.New("field PasswordComplexityUserPassword is empty") + } + if e.LoginPolicyUserPassword == "" { + return errors.New("field LoginPolicyUserPassword is empty") + } + return nil +} + +func MustNewConfig(v *viper.Viper) *Config { + config := new(Config) + + err := v.Unmarshal(config, + viper.DecodeHook(mapstructure.ComposeDecodeHookFunc( + hook.Base64ToBytesHookFunc(), + hook.TagToLanguageHookFunc(), + mapstructure.StringToTimeDurationHookFunc(), + mapstructure.StringToSliceHookFunc(","), + )), + ) + err = config.Log.SetLogger() + logging.OnError(err).Fatal("unable to set logger") + + return config +} diff --git a/cmd/e2e-setup/consistency.go b/cmd/e2e-setup/consistency.go new file mode 100644 index 00000000000..47acbe630cc --- /dev/null +++ b/cmd/e2e-setup/consistency.go @@ -0,0 +1,65 @@ +package main + +import ( + "context" + "fmt" + "time" + + "github.com/zitadel/logging" +) + +func awaitConsistency(ctx context.Context, cfg E2EConfig, expectUsers []userData) (err error) { + + retry := make(chan struct{}) + go func() { + // trigger first check + retry <- struct{}{} + }() + for { + select { + case <-retry: + err = checkCondition(ctx, cfg, expectUsers) + if err == nil { + logging.Log("AWAIT-QIOOJ").Info("setup is consistent") + return nil + } + logging.Log("AWAIT-VRk3Y").Info("setup is not consistent yet, retrying in a second: ", err) + time.Sleep(time.Second) + go func() { + retry <- struct{}{} + }() + case <-ctx.Done(): + return fmt.Errorf("setup failed to come to a consistent state: %s: %w", ctx.Err(), err) + } + } +} + +func checkCondition(ctx context.Context, cfg E2EConfig, expectUsers []userData) error { + token, err := newToken(cfg) + if err != nil { + return err + } + + foundUsers, err := listUsers(ctx, cfg.APIURL, token) + if err != nil { + return err + } + + var awaitingUsers []string +expectLoop: + for i := range expectUsers { + expectUser := expectUsers[i] + for j := range foundUsers { + foundUser := foundUsers[j] + if expectUser.desc+"_user_name" == foundUser { + continue expectLoop + } + } + awaitingUsers = append(awaitingUsers, expectUser.desc) + } + + if len(awaitingUsers) > 0 { + return fmt.Errorf("users %v are not consistent yet", awaitingUsers) + } + return nil +} diff --git a/cmd/e2e-setup/execute.go b/cmd/e2e-setup/execute.go new file mode 100644 index 00000000000..6febec706ff --- /dev/null +++ b/cmd/e2e-setup/execute.go @@ -0,0 +1,110 @@ +package main + +import ( + "context" + "io/ioutil" + "os" + "path/filepath" + "time" + + "github.com/zitadel/zitadel/internal/command" + "github.com/zitadel/zitadel/internal/domain" + "github.com/zitadel/zitadel/internal/eventstore/v1/models" +) + +func execute(ctx context.Context, cmd *command.Commands, cfg E2EConfig, users []userData) error { + + orgOwner := newHuman(users[0]) + + orgOwnerID, org, err := cmd.SetUpOrg(ctx, &command.OrgSetup{ + Name: cfg.Org, + CustomDomain: "localhost", + Human: *orgOwner, + }) + if err != nil { + return err + } + + // Avoids the MFA nudge + if _, err = cmd.AddLoginPolicy(ctx, org.ResourceOwner, &domain.LoginPolicy{ + AllowUsernamePassword: true, + }); err != nil { + return err + } + + // Avoids the change password screen + if _, err = cmd.ChangePassword(ctx, org.ResourceOwner, orgOwnerID, cfg.OrgOwnerPassword, cfg.OrgOwnerPassword, ""); err != nil { + return err + } + + sa, err := cmd.AddMachine(ctx, org.ResourceOwner, &domain.Machine{ + Username: "e2e", + Name: "e2e", + Description: "User who calls the ZITADEL API for preparing end-to-end tests", + }) + if err != nil { + return err + } + + if _, err = cmd.AddOrgMember(ctx, org.ResourceOwner, sa.AggregateID, domain.RoleOrgOwner); err != nil { + return err + } + + key, err := cmd.AddUserMachineKey(ctx, &domain.MachineKey{ + ObjectRoot: models.ObjectRoot{ + AggregateID: sa.AggregateID, + }, + ExpirationDate: time.Now().Add(30 * 24 * time.Hour), + Type: domain.AuthNKeyTypeJSON, + }, org.ResourceOwner) + if err != nil { + return err + } + + json, err := key.MarshalJSON() + if err != nil { + return err + } + + if err = os.MkdirAll(filepath.Dir(cfg.MachineKeyPath), 0700); err != nil { + return err + } + + if err = ioutil.WriteFile(cfg.MachineKeyPath, json, 0600); err != nil { + return err + } + + for idx := range users[1:] { + user := users[idx] + + createdHuman, err := cmd.AddHuman(ctx, org.ResourceOwner, newHuman(user)) + if err != nil { + return err + } + + // Avoids the change password screen + if _, err = cmd.ChangePassword(ctx, org.ResourceOwner, createdHuman.ID, user.pw, user.pw, ""); err != nil { + return err + } + + if user.role != "" { + if _, err = cmd.AddOrgMember(ctx, org.ResourceOwner, createdHuman.ID, user.role); err != nil { + return err + } + } + } + return nil +} + +func newHuman(u userData) *command.AddHuman { + return &command.AddHuman{ + Username: u.desc + "_user_name", + FirstName: u.desc + "_first_name", + LastName: u.desc + "_last_name", + Password: u.pw, + Email: command.Email{ + Address: u.desc + ".e2e@zitadel.com", + Verified: true, + }, + } +} diff --git a/cmd/e2e-setup/main.go b/cmd/e2e-setup/main.go new file mode 100644 index 00000000000..b38e785a0bb --- /dev/null +++ b/cmd/e2e-setup/main.go @@ -0,0 +1,139 @@ +package main + +import ( + "context" + _ "embed" + "flag" + "fmt" + "time" + + "github.com/zitadel/zitadel/internal/id" + + "github.com/spf13/viper" + + "github.com/zitadel/zitadel/internal/config/options" + + "github.com/zitadel/zitadel/internal/command" + "github.com/zitadel/zitadel/internal/database" + "github.com/zitadel/zitadel/internal/eventstore" + "github.com/zitadel/zitadel/internal/webauthn" + + "gopkg.in/yaml.v3" + + "github.com/zitadel/zitadel/internal/domain" + + "github.com/zitadel/logging" +) + +type userData struct { + desc, role, pw string +} + +func main() { + // masterkey := flag.String("materkey", "MasterkeyNeedsToHave32Characters", "the ZITADEL installations masterkey") + debug := flag.Bool("debug", false, "print information that is helpful for debugging") + + err := options.InitViper() + logging.OnError(err).Fatalf("unable to initialize config: %s", err) + + flag.Parse() + viper. + fmt.Println(x) + conf := MustNewConfig(viper.GetViper()) + + if *debug { + printConfig("config", conf) + } + + logging.New().OnError(err).Fatal("validating e2e config failed") + + startE2ESetup(conf) +} + +func startE2ESetup(conf *Config /*, masterkey string*/) { + + id.Configure(conf.Machine) + + ctx := context.Background() + + dbClient, err := database.Connect(conf.Database) + logging.New().OnError(err).Fatalf("cannot start client for projection: %s", err) + + /* + keyStorage, err := cryptoDB.NewKeyStorage(dbClient, masterkey) + logging.New().OnError(err).Fatalf("cannot start key storage: %s", err) + + keys, err := ensureEncryptionKeys(conf.EncryptionKeys, keyStorage) + logging.New().OnError(err).Fatalf("failed ensuring encryption keys: %s", err) + */ + + eventstoreClient, err := eventstore.Start(dbClient) + logging.New().OnError(err).Fatalf("cannot start eventstore for queries: %s", err) + + storage, err := conf.AssetStorage.NewStorage(dbClient) + logging.New().OnError(err).Fatalf("cannot start asset storage client: %s", err) + + webAuthNConfig := &webauthn.Config{ + DisplayName: conf.WebAuthNName, + ExternalSecure: conf.ExternalSecure, + } + + commands, err := command.StartCommands( + eventstoreClient, + conf.SystemDefaults, + conf.InternalAuthZ.RolePermissionMappings, + storage, + webAuthNConfig, + conf.ExternalDomain, + conf.ExternalSecure, + conf.ExternalPort, + nil, //keys.IDPConfig, + nil, //keys.OTP, + nil, //keys.SMTP, + nil, //keys.SMS, + nil, //keys.User, + nil, //keys.DomainVerification, + nil, //keys.OIDC, + ) + logging.New().OnError(err).Errorf("cannot start commands: %s", err) + + users := []userData{{ + desc: "org_owner", + pw: conf.E2E.OrgOwnerPassword, + role: domain.RoleOrgOwner, + }, { + desc: "org_owner_viewer", + pw: conf.E2E.OrgOwnerViewerPassword, + role: domain.RoleOrgOwner, + }, { + desc: "org_project_creator", + pw: conf.E2E.OrgProjectCreatorPassword, + role: domain.RoleOrgProjectCreator, + }, { + desc: "login_policy_user", + pw: conf.E2E.LoginPolicyUserPassword, + }, { + desc: "password_complexity_user", + pw: conf.E2E.PasswordComplexityUserPassword, + }} + + err = execute(ctx, commands, *conf.E2E, users) + logging.New().OnError(err).Errorf("failed to execute commands steps") + + eventualConsistencyCtx, cancel := context.WithTimeout(ctx, 5*time.Minute) + defer cancel() + err = awaitConsistency( + eventualConsistencyCtx, + *conf.E2E, + users, + ) + logging.New().OnError(err).Fatal("failed to await consistency") +} + +func printConfig(desc string, cfg interface{}) { + bytes, err := yaml.Marshal(cfg) + logging.New().OnError(err).Fatal("cannot marshal config") + + logging.New().Info("got the following ", desc, " config") + fmt.Println(string(bytes)) +} diff --git a/cmd/e2e-setup/token.go b/cmd/e2e-setup/token.go new file mode 100644 index 00000000000..124ba0d4162 --- /dev/null +++ b/cmd/e2e-setup/token.go @@ -0,0 +1,85 @@ +package main + +import ( + "encoding/json" + "fmt" + "github.com/golang-jwt/jwt/v4" + "io/ioutil" + "net/http" + "os" + "strings" + "time" +) + +func newToken(cfg E2EConfig) (string, error) { + + keyBytes, err := os.ReadFile(cfg.MachineKeyPath) + if err != nil { + return "", err + } + + key := struct{ UserId, KeyId, Key string }{} + if err := json.Unmarshal(keyBytes, &key); err != nil { + return "", err + } + + if key.KeyId == "" || + key.UserId == "" || + key.Key == "" { + return "", fmt.Errorf("key is incomplete: %+v", key) + } + + now := time.Now() + iat := now.Unix() + exp := now.Add(55 * time.Minute).Unix() + + audience := cfg.Audience + if audience == "" { + audience = cfg.IssuerURL + } + + token := jwt.NewWithClaims(jwt.SigningMethodRS256, jwt.MapClaims{ + "iss": key.UserId, + "sub": key.UserId, + "aud": audience, + "iat": iat, + "exp": exp, + }) + + token.Header["alg"] = "RS256" + token.Header["kid"] = key.KeyId + + rsaKey, err := jwt.ParseRSAPrivateKeyFromPEM([]byte(key.Key)) + if err != nil { + return "", err + } + + tokenString, err := token.SignedString(rsaKey) + if err != nil { + return "", err + } + + resp, err := http.PostForm(fmt.Sprintf("%s/oauth/v2/token", cfg.APIURL), map[string][]string{ + "grant_type": {"urn:ietf:params:oauth:grant-type:jwt-bearer"}, + "scope": {fmt.Sprintf("openid urn:zitadel:iam:org:project:id:%s:aud", strings.TrimPrefix(cfg.ZitadelProjectResourceID, "bignumber-"))}, + "assertion": {tokenString}, + }) + if err != nil { + return "", err + } + + tokenBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", err + } + + if resp.StatusCode < 200 || resp.StatusCode > 399 { + return "", fmt.Errorf("getting token returned status code %d and body %s", resp.StatusCode, string(tokenBody)) + } + + tokenResp := struct { + AccessToken string `json:"access_token"` + }{} + + return tokenResp.AccessToken, json.Unmarshal(tokenBody, &tokenResp) +} diff --git a/cmd/e2e-setup/users.go b/cmd/e2e-setup/users.go new file mode 100644 index 00000000000..47f988786a2 --- /dev/null +++ b/cmd/e2e-setup/users.go @@ -0,0 +1,52 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" +) + +func listUsers(ctx context.Context, apiUrl, token string) ([]string, error) { + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, apiUrl+"/management/v1/users/_search", nil) + if err != nil { + return nil, err + } + + req.Header.Set("Authorization", "Bearer "+token) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + bodyBytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + if resp.StatusCode < 200 || resp.StatusCode > 399 { + return nil, fmt.Errorf("listing users returned status code %d and body %s", resp.StatusCode, string(bodyBytes)) + } + + unmarshalledResp := struct { + Result []struct { + UserName string `json:"userName"` + } + }{} + + if err = json.Unmarshal(bodyBytes, &unmarshalledResp); err != nil { + return nil, err + } + + users := make([]string, len(unmarshalledResp.Result)) + for i := range unmarshalledResp.Result { + users[i] = unmarshalledResp.Result[i].UserName + } + + return users, nil +} diff --git a/cmd/start/config.go b/cmd/start/config.go index ad7d1617041..1b24fe51263 100644 --- a/cmd/start/config.go +++ b/cmd/start/config.go @@ -1,10 +1,11 @@ package start import ( - "time" - "github.com/mitchellh/mapstructure" "github.com/spf13/viper" + "github.com/zitadel/zitadel/internal/config/hook" + "time" + "github.com/zitadel/logging" admin_es "github.com/zitadel/zitadel/internal/admin/repository/eventsourcing" @@ -15,7 +16,6 @@ import ( "github.com/zitadel/zitadel/internal/api/ui/login" auth_es "github.com/zitadel/zitadel/internal/auth/repository/eventsourcing" "github.com/zitadel/zitadel/internal/command" - "github.com/zitadel/zitadel/internal/config/hook" "github.com/zitadel/zitadel/internal/config/network" "github.com/zitadel/zitadel/internal/config/systemdefaults" "github.com/zitadel/zitadel/internal/crypto" @@ -54,6 +54,18 @@ type Config struct { CustomerPortal string } +type encryptionKeyConfig struct { + DomainVerification *crypto.KeyConfig + IDPConfig *crypto.KeyConfig + OIDC *crypto.KeyConfig + OTP *crypto.KeyConfig + SMS *crypto.KeyConfig + SMTP *crypto.KeyConfig + User *crypto.KeyConfig + CSRFCookieKeyID string + UserAgentCookieKeyID string +} + func MustNewConfig(v *viper.Viper) *Config { config := new(Config) @@ -73,15 +85,3 @@ func MustNewConfig(v *viper.Viper) *Config { return config } - -type encryptionKeyConfig struct { - DomainVerification *crypto.KeyConfig - IDPConfig *crypto.KeyConfig - OIDC *crypto.KeyConfig - OTP *crypto.KeyConfig - SMS *crypto.KeyConfig - SMTP *crypto.KeyConfig - User *crypto.KeyConfig - CSRFCookieKeyID string - UserAgentCookieKeyID string -} diff --git a/cmd/start/start_from_init.go b/cmd/start/start_from_init.go index 89c74d55922..cc44f18864c 100644 --- a/cmd/start/start_from_init.go +++ b/cmd/start/start_from_init.go @@ -4,6 +4,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/zitadel/logging" + "github.com/zitadel/zitadel/internal/config/options" "github.com/zitadel/zitadel/cmd/initialise" "github.com/zitadel/zitadel/cmd/key" @@ -35,7 +36,7 @@ Requirements: setupSteps := setup.MustNewSteps(viper.New()) setup.Setup(setupConfig, setupSteps, masterKey) - startConfig := MustNewConfig(viper.GetViper()) + startConfig := options.MustNewConfig(viper.GetViper()) err = startZitadel(startConfig, masterKey) logging.OnError(err).Fatal("unable to start zitadel") diff --git a/cmd/zitadel.go b/cmd/zitadel.go index 0077b628854..285779a6f08 100644 --- a/cmd/zitadel.go +++ b/cmd/zitadel.go @@ -1,14 +1,13 @@ package cmd import ( - "bytes" _ "embed" "errors" "io" - "strings" + + "github.com/zitadel/zitadel/internal/config/options" "github.com/spf13/cobra" - "github.com/spf13/viper" "github.com/zitadel/logging" "github.com/zitadel/zitadel/cmd/admin" @@ -20,9 +19,6 @@ import ( var ( configFiles []string - - //go:embed defaults.yaml - defaultConfig []byte ) func New(out io.Writer, in io.Reader, args []string) *cobra.Command { @@ -35,12 +31,8 @@ func New(out io.Writer, in io.Reader, args []string) *cobra.Command { }, } - viper.AutomaticEnv() - viper.SetEnvPrefix("ZITADEL") - viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) - viper.SetConfigType("yaml") - err := viper.ReadConfig(bytes.NewBuffer(defaultConfig)) - logging.OnError(err).Fatal("unable to read default config") + err := options.InitViper() + logging.OnError(err).Fatalf("unable initialize config: %s", err) cobra.OnInitialize(initConfig) cmd.PersistentFlags().StringArrayVar(&configFiles, "config", nil, "path to config file to overwrite system defaults") @@ -58,9 +50,5 @@ func New(out io.Writer, in io.Reader, args []string) *cobra.Command { } func initConfig() { - for _, file := range configFiles { - viper.SetConfigFile(file) - err := viper.MergeInConfig() - logging.WithFields("file", file).OnError(err).Warn("unable to read config file") - } + options.MergeToViper(configFiles...) } diff --git a/console/e2e.env b/console/e2e.env deleted file mode 100644 index 373e72db385..00000000000 --- a/console/e2e.env +++ /dev/null @@ -1,14 +0,0 @@ -E2E_CYPRESS_PORT=5003 -E2E_ORG=e2e-tests -E2E_ORG_OWNER_PW=Password1! -E2E_ORG_OWNER_VIEWER_PW=Password1! -E2E_ORG_PROJECT_CREATOR_PW=Password1! -E2E_PASSWORD_COMPLEXITY_USER_PW=Password1! -E2E_LOGIN_POLICY_USER_PW=Password1! -E2E_SERVICEACCOUNT_KEY_PATH="${projectRoot}/.keys/e2e.json" -E2E_CONSOLE_URL="http://localhost:4200" -E2E_API_URL="http://localhost:50002" -E2E_ACCOUNTS_URL="http://localhost:50003" -E2E_ISSUER_URL="http://localhost:50002/oauth/v2" -E2E_OTHER_ZITADEL_IDP_INSTANCE=false -E2E_ZITADEL_PROJECT_RESOURCE_ID="bignumber-$(echo -n $(docker compose -f ${projectRoot}/build/local/docker-compose-local.yml exec --no-TTY db cockroach sql --insecure --execute "select aggregate_id from eventstore.events where event_type = 'project.added' and event_data = '{\"name\": \"Zitadel\"}';" --format tsv) | cut -d " " -f 2)" diff --git a/docs/docs/guides/installation/configure/configure.mdx b/docs/docs/guides/installation/configure/configure.mdx index 33b9384f054..a5707101702 100644 --- a/docs/docs/guides/installation/configure/configure.mdx +++ b/docs/docs/guides/installation/configure/configure.mdx @@ -16,7 +16,7 @@ This guide assumes you are already familiar with [running ZITADEL with the most ## Configuration Files ### Runtime Configuration -See a description of all possible _runtime configuration_ options with their defaults [in the source code](https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/defaults.yaml). +See a description of all possible _runtime configuration_ options with their defaults [in the source code](https://github.com/zitadel/zitadel/blob/v2-alpha/internal/config/options/defaults.yaml). The `zitadel` binary expects the `--config` flag for this configuration. ### Database Initialization @@ -67,7 +67,7 @@ This is the IAM admin users login according to your configuration in the [exampl - Read more about [the login process](../../manuals/user-login). - If you want to run ZITADEL in production, you most certainly need to [customize your own domain](./custom-domain). -- Check out all possible [runtime configuration properties and their defaults in the source code](https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/defaults.yaml) +- Check out all possible [runtime configuration properties and their defaults in the source code](https://github.com/zitadel/zitadel/blob/v2-alpha/internal/config/options/defaults.yaml) - Check out all possible [setup step configuration properties and their defaults in the source code](https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/setup/steps.yaml) :::caution diff --git a/docs/docs/guides/installation/configure/example-zitadel-config.yaml b/docs/docs/guides/installation/configure/example-zitadel-config.yaml index 0387561e411..58a718f3be6 100644 --- a/docs/docs/guides/installation/configure/example-zitadel-config.yaml +++ b/docs/docs/guides/installation/configure/example-zitadel-config.yaml @@ -1,4 +1,4 @@ -# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/defaults.yaml +# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/internal/config/options/defaults.yaml Log: Level: 'info' diff --git a/docs/docs/guides/installation/configure/example-zitadel-secrets.yaml b/docs/docs/guides/installation/configure/example-zitadel-secrets.yaml index f46cb0d683e..f6a0e4a7ed1 100644 --- a/docs/docs/guides/installation/configure/example-zitadel-secrets.yaml +++ b/docs/docs/guides/installation/configure/example-zitadel-secrets.yaml @@ -1,4 +1,4 @@ -# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/defaults.yaml +# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/internal/config/options/defaults.yaml # If not using the docker compose example, adjust these values for connecting ZITADEL to your CockroachDB Database: diff --git a/docs/docs/guides/installation/configure/example-zitadel-values-secrets.yaml b/docs/docs/guides/installation/configure/example-zitadel-values-secrets.yaml index 2475f0da349..c995b5710d9 100644 --- a/docs/docs/guides/installation/configure/example-zitadel-values-secrets.yaml +++ b/docs/docs/guides/installation/configure/example-zitadel-values-secrets.yaml @@ -1,4 +1,4 @@ -# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/defaults.yaml +# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/internal/config/options/defaults.yaml zitadel: masterkey: 'MasterkeyNeedsToHave32Characters' diff --git a/docs/docs/guides/installation/configure/example-zitadel-values.yaml b/docs/docs/guides/installation/configure/example-zitadel-values.yaml index 9fc6ee62232..6eaf4042572 100644 --- a/docs/docs/guides/installation/configure/example-zitadel-values.yaml +++ b/docs/docs/guides/installation/configure/example-zitadel-values.yaml @@ -1,4 +1,4 @@ -# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/defaults.yaml +# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/internal/config/options/defaults.yaml zitadel: configmapConfig: Log: diff --git a/docs/docs/guides/installation/loadbalancing-example/example-zitadel-config.yaml b/docs/docs/guides/installation/loadbalancing-example/example-zitadel-config.yaml index 54ee71ebff0..16b45486687 100644 --- a/docs/docs/guides/installation/loadbalancing-example/example-zitadel-config.yaml +++ b/docs/docs/guides/installation/loadbalancing-example/example-zitadel-config.yaml @@ -1,4 +1,4 @@ -# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/defaults.yaml +# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/internal/config/options/defaults.yaml Log: Level: 'info' diff --git a/docs/docs/guides/installation/loadbalancing-example/example-zitadel-secrets.yaml b/docs/docs/guides/installation/loadbalancing-example/example-zitadel-secrets.yaml index f46cb0d683e..f6a0e4a7ed1 100644 --- a/docs/docs/guides/installation/loadbalancing-example/example-zitadel-secrets.yaml +++ b/docs/docs/guides/installation/loadbalancing-example/example-zitadel-secrets.yaml @@ -1,4 +1,4 @@ -# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/cmd/defaults.yaml +# All possible options and their defaults: https://github.com/zitadel/zitadel/blob/v2-alpha/internal/config/options/defaults.yaml # If not using the docker compose example, adjust these values for connecting ZITADEL to your CockroachDB Database: diff --git a/console/cypress.sh b/e2e/cypress.sh similarity index 100% rename from console/cypress.sh rename to e2e/cypress.sh diff --git a/e2e/docker-compose-overwrite.yaml b/e2e/docker-compose-overwrite.yaml index 3b086bd25ee..7a1380fbb6a 100644 --- a/e2e/docker-compose-overwrite.yaml +++ b/e2e/docker-compose-overwrite.yaml @@ -1,4 +1,3 @@ services: zitadel: image: 'zitadel:${BUILD_DATE}' - diff --git a/e2e/docker-compose.sh b/e2e/docker-compose.sh new file mode 100755 index 00000000000..6b2c81a7281 --- /dev/null +++ b/e2e/docker-compose.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +COMPOSE_DOCKER_CLI_BUILD=1 docker compose --file ./docs/docs/guides/installation/run/docker-compose.yaml --file ./e2e/docker-compose-overwrite.yaml "$@" diff --git a/e2e/e2e-setup-debug.sh b/e2e/e2e-setup-debug.sh new file mode 100755 index 00000000000..179ddd5e926 --- /dev/null +++ b/e2e/e2e-setup-debug.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -ex + +projectRoot="." + +set -a +source ./e2e/local.env +set +a + +dlv debug --api-version 2 --headless --listen 127.0.0.1:2345 ./cmd/e2e-setup/*.go "$@" diff --git a/e2e/run.sh b/e2e/install.sh similarity index 73% rename from e2e/run.sh rename to e2e/install.sh index e23d3d110d5..ae11b6014b6 100755 --- a/e2e/run.sh +++ b/e2e/install.sh @@ -4,9 +4,8 @@ set -e DO_BUILD=1 DO_DEPLOY=1 -DO_TEST=1 -while getopts 'bdt:' OPTION; do +while getopts 'bd:' OPTION; do case "$OPTION" in b) echo "skipping build" @@ -16,15 +15,10 @@ while getopts 'bdt:' OPTION; do echo "skipping deployment" DO_DEPLOY=0 ;; - s) - echo "skipping tests" - DO_TEST=0 - ;; ?) echo "script usage: $(basename \$0) [-b] [-d] [-t]" >&2 echo "-b skip build" echo "-d skip deployment" - echo "-t skip tests" exit 1 ;; esac @@ -54,10 +48,10 @@ if [ "$DO_BUILD" -eq "1" ]; then BUILD_VERSION="$(extract_metadata metadata.json '.version')" # build the docker image - docker build --file ./build/Dockerfile --tag zitadel:latest --tag zitadel:$BUILD_VERSION --tag zitadel:$BUILD_DATE $BUILD_PATH + DOCKER_BUILDKIT=1 docker build --file ./build/Dockerfile --tag zitadel:latest --tag zitadel:$BUILD_VERSION --tag zitadel:$BUILD_DATE $BUILD_PATH fi if [ "$DO_DEPLOY" -eq "1" ]; then # run cockroach and zitadel - docker compose --file ./docs/docs/guides/installation/run/docker-compose.yaml --file ./e2e/docker-compose-overwrite.yaml up --detach + ./e2e/docker-compose.sh up --detach fi diff --git a/e2e/local.env b/e2e/local.env new file mode 100644 index 00000000000..aa2cc20413e --- /dev/null +++ b/e2e/local.env @@ -0,0 +1,14 @@ +ZITADEL_E2E_CYPRESS_PORT=5000 +ZITADEL_E2E_ORG=e2e-tests +ZITADEL_E2E_ORG_OWNER_PW=Password1! +ZITADEL_E2E_ORG_OWNER_VIEWER_PW=Password1! +ZITADEL_E2E_ORG_PROJECT_CREATOR_PW=Password1! +ZITADEL_E2E_PASSWORD_COMPLEXITY_USER_PW=Password1! +ZITADEL_E2E_LOGIN_POLICY_USER_PW=Password1! +ZITADEL_E2E_MACHINE_KEY_PATH="${projectRoot}/.keys/e2e.json" +ZITADEL_E2E_CONSOLE_URL="http://localhost:8080" +ZITADEL_E2E_API_URL="http://localhost:8080" +ZITADEL_E2E_ACCOUNTS_URL="http://localhost:8080" +ZITADEL_E2E_ISSUER_URL="http://localhost:8080/oauth/v2" +ZITADEL_E2E_OTHER_ZITADEL_IDP_INSTANCE=false +ZITADEL_E2E_ZITADEL_PROJECT_RESOURCE_ID="bignumber-$(echo -n $(./e2e/docker-compose.sh exec --no-TTY db cockroach sql --database zitadel --insecure --execute "select aggregate_id from eventstore.events where event_type = 'project.added' and event_data = '{\"name\": \"ZITADEL\"}';" --format tsv) | cut -d " " -f 2)" diff --git a/internal/config/options/defaults.go b/internal/config/options/defaults.go new file mode 100644 index 00000000000..6867e241ada --- /dev/null +++ b/internal/config/options/defaults.go @@ -0,0 +1,8 @@ +package options + +import ( + _ "embed" +) + +//go:embed defaults.yaml +var defaultConfig []byte diff --git a/cmd/defaults.yaml b/internal/config/options/defaults.yaml similarity index 100% rename from cmd/defaults.yaml rename to internal/config/options/defaults.yaml diff --git a/internal/config/options/viper.go b/internal/config/options/viper.go new file mode 100644 index 00000000000..1d4c91f5bd9 --- /dev/null +++ b/internal/config/options/viper.go @@ -0,0 +1,30 @@ +package options + +import ( + "bytes" + "fmt" + "strings" + + "github.com/spf13/viper" + "github.com/zitadel/logging" +) + +func InitViper() error { + viper.AutomaticEnv() + viper.SetEnvPrefix("ZITADEL") + viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) + viper.SetConfigType("yaml") + err := viper.ReadConfig(bytes.NewBuffer(defaultConfig)) + if err != nil { + return fmt.Errorf("unable to read default config: %w", err) + } + return nil +} + +func MergeToViper(configFiles ...string) { + for _, file := range configFiles { + viper.SetConfigFile(file) + err := viper.MergeInConfig() + logging.WithFields("file", file).OnError(err).Warn("unable to read config file") + } +} From a053b02f9b7eb0d484852364fdfa318acafbd509 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Fri, 8 Jul 2022 11:27:19 +0200 Subject: [PATCH 15/17] add more config --- cmd/e2e-setup/config.go | 14 ++++ cmd/e2e-setup/defaults.yaml | 12 ++++ cmd/e2e-setup/encryption_keys.go | 106 +++++++++++++++++++++++++++++++ cmd/e2e-setup/main.go | 49 ++++++++------ cmd/start/start_from_init.go | 4 +- e2e/local.env | 24 +++---- 6 files changed, 173 insertions(+), 36 deletions(-) create mode 100644 cmd/e2e-setup/defaults.yaml create mode 100644 cmd/e2e-setup/encryption_keys.go diff --git a/cmd/e2e-setup/config.go b/cmd/e2e-setup/config.go index 1a6bbac218b..f05d84d39b2 100644 --- a/cmd/e2e-setup/config.go +++ b/cmd/e2e-setup/config.go @@ -3,6 +3,7 @@ package main import ( "errors" "fmt" + "github.com/zitadel/zitadel/internal/crypto" "regexp" "github.com/zitadel/zitadel/internal/id" @@ -33,6 +34,7 @@ type Config struct { InternalAuthZ internal_authz.Config Machine *id.Config SystemDefaults systemdefaults.SystemDefaults + EncryptionKeys *encryptionKeyConfig } func (c Config) Validate() error { @@ -100,6 +102,18 @@ func (e E2EConfig) Validate() (err error) { return nil } +type encryptionKeyConfig struct { + DomainVerification *crypto.KeyConfig + IDPConfig *crypto.KeyConfig + OIDC *crypto.KeyConfig + OTP *crypto.KeyConfig + SMS *crypto.KeyConfig + SMTP *crypto.KeyConfig + User *crypto.KeyConfig + CSRFCookieKeyID string + UserAgentCookieKeyID string +} + func MustNewConfig(v *viper.Viper) *Config { config := new(Config) diff --git a/cmd/e2e-setup/defaults.yaml b/cmd/e2e-setup/defaults.yaml new file mode 100644 index 00000000000..ed570772783 --- /dev/null +++ b/cmd/e2e-setup/defaults.yaml @@ -0,0 +1,12 @@ +E2E: + Org: "e2e-tests" + MachineKeyPath: ".keys/e2e.json" + ZitadelProjectResourceID: "" + APIURL: "http://localhost:8080" + IssuerURL: "http://localhost:8080/oauth/v2" + Audience: "" + OrgOwnerPassword: "Password1!" + OrgOwnerViewerPassword: "Password1!" + OrgProjectCreatorPassword: "Password1!" + PasswordComplexityUserPassword: "Password1!" + LoginPolicyUserPassword: "Password1!" diff --git a/cmd/e2e-setup/encryption_keys.go b/cmd/e2e-setup/encryption_keys.go new file mode 100644 index 00000000000..151112a4549 --- /dev/null +++ b/cmd/e2e-setup/encryption_keys.go @@ -0,0 +1,106 @@ +package main + +import ( + "github.com/zitadel/zitadel/internal/crypto" + caos_errs "github.com/zitadel/zitadel/internal/errors" +) + +var ( + defaultKeyIDs = []string{ + "domainVerificationKey", + "idpConfigKey", + "oidcKey", + "otpKey", + "smsKey", + "smtpKey", + "userKey", + "csrfCookieKey", + "userAgentCookieKey", + } +) + +type encryptionKeys struct { + DomainVerification crypto.EncryptionAlgorithm + IDPConfig crypto.EncryptionAlgorithm + OIDC crypto.EncryptionAlgorithm + OTP crypto.EncryptionAlgorithm + SMS crypto.EncryptionAlgorithm + SMTP crypto.EncryptionAlgorithm + User crypto.EncryptionAlgorithm + CSRFCookieKey []byte + UserAgentCookieKey []byte + OIDCKey []byte +} + +func ensureEncryptionKeys(keyConfig *encryptionKeyConfig, keyStorage crypto.KeyStorage) (keys *encryptionKeys, err error) { + if err := verifyDefaultKeys(keyStorage); err != nil { + return nil, err + } + keys = new(encryptionKeys) + keys.DomainVerification, err = crypto.NewAESCrypto(keyConfig.DomainVerification, keyStorage) + if err != nil { + return nil, err + } + keys.IDPConfig, err = crypto.NewAESCrypto(keyConfig.IDPConfig, keyStorage) + if err != nil { + return nil, err + } + keys.OIDC, err = crypto.NewAESCrypto(keyConfig.OIDC, keyStorage) + if err != nil { + return nil, err + } + key, err := crypto.LoadKey(keyConfig.OIDC.EncryptionKeyID, keyStorage) + if err != nil { + return nil, err + } + keys.OIDCKey = []byte(key) + keys.OTP, err = crypto.NewAESCrypto(keyConfig.OTP, keyStorage) + if err != nil { + return nil, err + } + keys.SMS, err = crypto.NewAESCrypto(keyConfig.SMS, keyStorage) + if err != nil { + return nil, err + } + keys.SMTP, err = crypto.NewAESCrypto(keyConfig.SMTP, keyStorage) + if err != nil { + return nil, err + } + keys.User, err = crypto.NewAESCrypto(keyConfig.User, keyStorage) + if err != nil { + return nil, err + } + key, err = crypto.LoadKey(keyConfig.CSRFCookieKeyID, keyStorage) + if err != nil { + return nil, err + } + keys.CSRFCookieKey = []byte(key) + key, err = crypto.LoadKey(keyConfig.UserAgentCookieKeyID, keyStorage) + if err != nil { + return nil, err + } + keys.UserAgentCookieKey = []byte(key) + return keys, nil +} + +func verifyDefaultKeys(keyStorage crypto.KeyStorage) (err error) { + keys := make([]*crypto.Key, 0, len(defaultKeyIDs)) + for _, keyID := range defaultKeyIDs { + _, err := crypto.LoadKey(keyID, keyStorage) + if err == nil { + continue + } + key, err := crypto.NewKey(keyID) + if err != nil { + return err + } + keys = append(keys, key) + } + if len(keys) == 0 { + return nil + } + if err := keyStorage.CreateKeys(keys...); err != nil { + return caos_errs.ThrowInternal(err, "START-aGBq2", "cannot create default keys") + } + return nil +} diff --git a/cmd/e2e-setup/main.go b/cmd/e2e-setup/main.go index b38e785a0bb..ca4b5116431 100644 --- a/cmd/e2e-setup/main.go +++ b/cmd/e2e-setup/main.go @@ -1,12 +1,15 @@ package main import ( + "bytes" "context" _ "embed" "flag" "fmt" "time" + cryptoDB "github.com/zitadel/zitadel/internal/crypto/database" + "github.com/zitadel/zitadel/internal/id" "github.com/spf13/viper" @@ -25,20 +28,27 @@ import ( "github.com/zitadel/logging" ) +var ( + //go:embed defaults.yaml + e2edefaults []byte +) + type userData struct { desc, role, pw string } func main() { - // masterkey := flag.String("materkey", "MasterkeyNeedsToHave32Characters", "the ZITADEL installations masterkey") + masterkey := flag.String("materkey", "MasterkeyNeedsToHave32Characters", "the ZITADEL installations masterkey") debug := flag.Bool("debug", false, "print information that is helpful for debugging") err := options.InitViper() - logging.OnError(err).Fatalf("unable to initialize config: %s", err) + logging.OnError(err).Fatalf("unable to initialize zitadel config: %s", err) flag.Parse() - viper. - fmt.Println(x) + + err = viper.MergeConfig(bytes.NewBuffer(e2edefaults)) + logging.OnError(err).Fatalf("unable to initialize e2e config: %s", err) + conf := MustNewConfig(viper.GetViper()) if *debug { @@ -47,10 +57,10 @@ func main() { logging.New().OnError(err).Fatal("validating e2e config failed") - startE2ESetup(conf) + startE2ESetup(conf, *masterkey) } -func startE2ESetup(conf *Config /*, masterkey string*/) { +func startE2ESetup(conf *Config, masterkey string) { id.Configure(conf.Machine) @@ -59,14 +69,11 @@ func startE2ESetup(conf *Config /*, masterkey string*/) { dbClient, err := database.Connect(conf.Database) logging.New().OnError(err).Fatalf("cannot start client for projection: %s", err) - /* - keyStorage, err := cryptoDB.NewKeyStorage(dbClient, masterkey) - logging.New().OnError(err).Fatalf("cannot start key storage: %s", err) - - keys, err := ensureEncryptionKeys(conf.EncryptionKeys, keyStorage) - logging.New().OnError(err).Fatalf("failed ensuring encryption keys: %s", err) - */ + keyStorage, err := cryptoDB.NewKeyStorage(dbClient, masterkey) + logging.New().OnError(err).Fatalf("cannot start key storage: %s", err) + keys, err := ensureEncryptionKeys(conf.EncryptionKeys, keyStorage) + logging.New().OnError(err).Fatalf("failed ensuring encryption keys: %s", err) eventstoreClient, err := eventstore.Start(dbClient) logging.New().OnError(err).Fatalf("cannot start eventstore for queries: %s", err) @@ -87,13 +94,13 @@ func startE2ESetup(conf *Config /*, masterkey string*/) { conf.ExternalDomain, conf.ExternalSecure, conf.ExternalPort, - nil, //keys.IDPConfig, - nil, //keys.OTP, - nil, //keys.SMTP, - nil, //keys.SMS, - nil, //keys.User, - nil, //keys.DomainVerification, - nil, //keys.OIDC, + keys.IDPConfig, + keys.OTP, + keys.SMTP, + keys.SMS, + keys.User, + keys.DomainVerification, + keys.OIDC, ) logging.New().OnError(err).Errorf("cannot start commands: %s", err) @@ -118,7 +125,7 @@ func startE2ESetup(conf *Config /*, masterkey string*/) { }} err = execute(ctx, commands, *conf.E2E, users) - logging.New().OnError(err).Errorf("failed to execute commands steps") + logging.New().OnError(err).Fatalf("failed to execute commands steps") eventualConsistencyCtx, cancel := context.WithTimeout(ctx, 5*time.Minute) defer cancel() diff --git a/cmd/start/start_from_init.go b/cmd/start/start_from_init.go index cc44f18864c..e348febc78d 100644 --- a/cmd/start/start_from_init.go +++ b/cmd/start/start_from_init.go @@ -4,8 +4,6 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/zitadel/logging" - "github.com/zitadel/zitadel/internal/config/options" - "github.com/zitadel/zitadel/cmd/initialise" "github.com/zitadel/zitadel/cmd/key" "github.com/zitadel/zitadel/cmd/setup" @@ -36,7 +34,7 @@ Requirements: setupSteps := setup.MustNewSteps(viper.New()) setup.Setup(setupConfig, setupSteps, masterKey) - startConfig := options.MustNewConfig(viper.GetViper()) + startConfig := MustNewConfig(viper.GetViper()) err = startZitadel(startConfig, masterKey) logging.OnError(err).Fatal("unable to start zitadel") diff --git a/e2e/local.env b/e2e/local.env index aa2cc20413e..243fb463a67 100644 --- a/e2e/local.env +++ b/e2e/local.env @@ -1,14 +1,14 @@ ZITADEL_E2E_CYPRESS_PORT=5000 ZITADEL_E2E_ORG=e2e-tests -ZITADEL_E2E_ORG_OWNER_PW=Password1! -ZITADEL_E2E_ORG_OWNER_VIEWER_PW=Password1! -ZITADEL_E2E_ORG_PROJECT_CREATOR_PW=Password1! -ZITADEL_E2E_PASSWORD_COMPLEXITY_USER_PW=Password1! -ZITADEL_E2E_LOGIN_POLICY_USER_PW=Password1! -ZITADEL_E2E_MACHINE_KEY_PATH="${projectRoot}/.keys/e2e.json" -ZITADEL_E2E_CONSOLE_URL="http://localhost:8080" -ZITADEL_E2E_API_URL="http://localhost:8080" -ZITADEL_E2E_ACCOUNTS_URL="http://localhost:8080" -ZITADEL_E2E_ISSUER_URL="http://localhost:8080/oauth/v2" -ZITADEL_E2E_OTHER_ZITADEL_IDP_INSTANCE=false -ZITADEL_E2E_ZITADEL_PROJECT_RESOURCE_ID="bignumber-$(echo -n $(./e2e/docker-compose.sh exec --no-TTY db cockroach sql --database zitadel --insecure --execute "select aggregate_id from eventstore.events where event_type = 'project.added' and event_data = '{\"name\": \"ZITADEL\"}';" --format tsv) | cut -d " " -f 2)" +ZITADEL_E2E_ORGOWNERPW=Password1! +ZITADEL_E2E_ORGOWNERVIEWERPW=Password1! +ZITADEL_E2E_ORGPROJECTCREATORPW=Password1! +ZITADEL_E2E_PASSWORDCOMPLEXITYUSERPW=Password1! +ZITADEL_E2E_LOGINPOLICYUSERPW=Password1! +ZITADEL_E2E_MACHINEKEYPATH="${projectRoot}/.keys/e2e.json" +ZITADEL_E2E_CONSOLEURL="http://localhost:8080" +ZITADEL_E2E_APIURL="http://localhost:8080" +ZITADEL_E2E_ACCOUNTSURL="http://localhost:8080" +ZITADEL_E2E_ISSUERURL="http://localhost:8080/oauth/v2" +ZITADEL_E2E_OTHERZITADELIDPINSTANCE=false +ZITADEL_E2E_ZITADELPROJECTRESOURCEID="bignumber-$(echo -n $(./e2e/docker-compose.sh exec --no-TTY db cockroach sql --database zitadel --insecure --execute "select aggregate_id from eventstore.events where event_type = 'project.added' and event_data = '{\"name\": \"ZITADEL\"}';" --format tsv) | cut -d " " -f 2)" From f8444ff04f1602cd6bb760bc5dec5ec8bb525e58 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Fri, 8 Jul 2022 15:20:35 +0200 Subject: [PATCH 16/17] make e2e setup work --- cmd/e2e-setup/config.go | 6 ++++-- cmd/e2e-setup/defaults.yaml | 5 +++-- cmd/e2e-setup/execute.go | 6 +++++- e2e/local.env | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cmd/e2e-setup/config.go b/cmd/e2e-setup/config.go index f05d84d39b2..fd3c25b4d03 100644 --- a/cmd/e2e-setup/config.go +++ b/cmd/e2e-setup/config.go @@ -3,9 +3,10 @@ package main import ( "errors" "fmt" - "github.com/zitadel/zitadel/internal/crypto" "regexp" + "github.com/zitadel/zitadel/internal/crypto" + "github.com/zitadel/zitadel/internal/id" "github.com/zitadel/zitadel/internal/database" @@ -47,6 +48,7 @@ func (c Config) Validate() error { type E2EConfig struct { Org string MachineKeyPath string + InstanceID string ZitadelProjectResourceID string APIURL string IssuerURL string @@ -70,7 +72,7 @@ func (e E2EConfig) Validate() (err error) { } audPattern := "number-[0-9]{17}" - matched, err := regexp.MatchString("number-[0-9]{17}", e.ZitadelProjectResourceID) + matched, err := regexp.MatchString("bignumber-[0-9]{17}", e.ZitadelProjectResourceID) if err != nil { return fmt.Errorf("validating ZitadelProjectResourceID failed: %w", err) } diff --git a/cmd/e2e-setup/defaults.yaml b/cmd/e2e-setup/defaults.yaml index ed570772783..d7c6a37eb30 100644 --- a/cmd/e2e-setup/defaults.yaml +++ b/cmd/e2e-setup/defaults.yaml @@ -1,10 +1,11 @@ E2E: + InstanceID: "" + ZitadelProjectResourceID: "" Org: "e2e-tests" MachineKeyPath: ".keys/e2e.json" - ZitadelProjectResourceID: "" APIURL: "http://localhost:8080" IssuerURL: "http://localhost:8080/oauth/v2" - Audience: "" + Audience: "http://localhost:8080" OrgOwnerPassword: "Password1!" OrgOwnerViewerPassword: "Password1!" OrgProjectCreatorPassword: "Password1!" diff --git a/cmd/e2e-setup/execute.go b/cmd/e2e-setup/execute.go index 6febec706ff..8063d5d1f99 100644 --- a/cmd/e2e-setup/execute.go +++ b/cmd/e2e-setup/execute.go @@ -7,6 +7,8 @@ import ( "path/filepath" "time" + "github.com/zitadel/zitadel/internal/api/authz" + "github.com/zitadel/zitadel/internal/command" "github.com/zitadel/zitadel/internal/domain" "github.com/zitadel/zitadel/internal/eventstore/v1/models" @@ -14,6 +16,8 @@ import ( func execute(ctx context.Context, cmd *command.Commands, cfg E2EConfig, users []userData) error { + ctx = authz.WithInstanceID(ctx, cfg.InstanceID) + orgOwner := newHuman(users[0]) orgOwnerID, org, err := cmd.SetUpOrg(ctx, &command.OrgSetup{ @@ -75,7 +79,7 @@ func execute(ctx context.Context, cmd *command.Commands, cfg E2EConfig, users [] } for idx := range users[1:] { - user := users[idx] + user := users[idx+1] createdHuman, err := cmd.AddHuman(ctx, org.ResourceOwner, newHuman(user)) if err != nil { diff --git a/e2e/local.env b/e2e/local.env index 243fb463a67..d73a051500b 100644 --- a/e2e/local.env +++ b/e2e/local.env @@ -12,3 +12,4 @@ ZITADEL_E2E_ACCOUNTSURL="http://localhost:8080" ZITADEL_E2E_ISSUERURL="http://localhost:8080/oauth/v2" ZITADEL_E2E_OTHERZITADELIDPINSTANCE=false ZITADEL_E2E_ZITADELPROJECTRESOURCEID="bignumber-$(echo -n $(./e2e/docker-compose.sh exec --no-TTY db cockroach sql --database zitadel --insecure --execute "select aggregate_id from eventstore.events where event_type = 'project.added' and event_data = '{\"name\": \"ZITADEL\"}';" --format tsv) | cut -d " " -f 2)" +ZITADEL_E2E_INSTANCEID="$(echo -n $(./e2e/docker-compose.sh exec --no-TTY db cockroach sql --database zitadel --insecure --execute "select aggregate_id from eventstore.events where event_type = 'instance.added' and event_data = '{\"name\": \"Localhost\"}';" --format tsv) | cut -d " " -f 2)" From dde02661921dff6a640e1e39d6d0ad00424d3527 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Fri, 8 Jul 2022 15:48:22 +0200 Subject: [PATCH 17/17] align variables --- console/cypress.sh | 21 +++++++++++++++++++++ e2e/cypress.sh | 21 --------------------- 2 files changed, 21 insertions(+), 21 deletions(-) create mode 100755 console/cypress.sh delete mode 100755 e2e/cypress.sh diff --git a/console/cypress.sh b/console/cypress.sh new file mode 100755 index 00000000000..c7ae0f0a65b --- /dev/null +++ b/console/cypress.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +ACTION=$1 +ENVFILE=$2 + +shift +shift + +projectRoot=".." + +set -a; source $ENVFILE; set +a + +NPX="" +if ! command -v cypress &> /dev/null; then + NPX="npx" +fi + +$NPX cypress $ACTION \ + --port ${E2E_CYPRESS_PORT} \ + --env org="${ZITADEL_E2E_ORG}",org_owner_password="${ZITADEL_E2E_ORGOWNERPW}",org_owner_viewer_password="${ZITADEL_E2E_ORGOWNERVIEWERPW}",org_project_creator_password="${ZITADEL_E2E_ORGPROJECTCREATORPW}",login_policy_user_password="${ZITADEL_E2E_LOGINPOLICYUSERPW}",password_complexity_user_password="${ZITADEL_E2E_PASSWORDCOMPLEXITYUSERPW}",consoleUrl="${ZITADEL_E2E_CONSOLEURL}",apiUrl="${ZITADEL_E2E_APIURL}",accountsUrl="${ZITADEL_E2E_ACCOUNTSURL}",issuerUrl="${ZITADEL_E2E_ISSUERURL}",serviceAccountKeyPath="${ZITADEL_E2E_MACHINEKEYPATH}",otherZitadelIdpInstance="${ZITADEL_E2E_OTHERZITADELIDPINSTANCE}",zitadelProjectResourceId="${ZITADEL_E2E_ZITADELPROJECTRESOURCEID}" \ + "$@" diff --git a/e2e/cypress.sh b/e2e/cypress.sh deleted file mode 100755 index 577ef53a119..00000000000 --- a/e2e/cypress.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -ACTION=$1 -ENVFILE=$2 - -shift -shift - -projectRoot=".." - -set -a; source $ENVFILE; set +a - -NPX="" -if ! command -v cypress &> /dev/null; then - NPX="npx" -fi - -$NPX cypress $ACTION \ - --port ${E2E_CYPRESS_PORT} \ - --env org="${E2E_ORG}",org_owner_password="${E2E_ORG_OWNER_PW}",org_owner_viewer_password="${E2E_ORG_OWNER_VIEWER_PW}",org_project_creator_password="${E2E_ORG_PROJECT_CREATOR_PW}",login_policy_user_password="${E2E_LOGIN_POLICY_USER_PW}",password_complexity_user_password="${E2E_PASSWORD_COMPLEXITY_USER_PW}",consoleUrl=${E2E_CONSOLE_URL},apiUrl="${E2E_API_URL}",accountsUrl="${E2E_ACCOUNTS_URL}",issuerUrl="${E2E_ISSUER_URL}",serviceAccountKey="${E2E_SERVICEACCOUNT_KEY}",serviceAccountKeyPath="${E2E_SERVICEACCOUNT_KEY_PATH}",otherZitadelIdpInstance="${E2E_OTHER_ZITADEL_IDP_INSTANCE}",zitadelProjectResourceId="${E2E_ZITADEL_PROJECT_RESOURCE_ID}" \ - "$@"